티스토리 뷰

개발환경

  • OS : AIX 7.2.0.0
  • java : 1.8.0_171

Issue

  • crontab에서 java 실행 시 java.lang.UnsupportedClassVersionError 가 발생함.
  • crontab을 등록한 user와 실행시키는 user가 참조하는 PATH가 다름.

문제 해결

  • java PATH를 확인해보자.
  • crontab을 실행하는 user의 참조하는 PATH가 컴파일버전보다 낮다면, sh을 실행시킬 때 PATH를 재지정 해줬음

해당 sh의 owner로 접속하여 실행 시에 정상작동하던 .sh이 동일 계정에서 crontab에 등록하여 실행 시에 에러가 발생하였다.

에러 메세지는 다음과 같다.

java.lang.UnsupportedClassVersionError

jar를 컴파일한 java버전보다 실행 java 버전이 달라서 나는 에러이다.

로컬과 서버에 java 버전을 동일하게 1.8버전으로 세팅하였고, .sh을 실행하였을 때 문제가 없었는데 crontab에 등록할 때만 compile 버전 에러가 난다.

sh을 실행 하는 owner의 java PATH를 확인해보자..

\> echo $PATH

java 버전이 동일하게 java8로 PATH가 잡혀있다.

아마crontab 실행 시 다른 PATH를 참조하고 있는 듯 하다.

crontab에 아래와 같이 $PATH를 찍어보자..

crontab에서 실행 후 친절하게 실행결과를 메일로 보내준다. 메일을 확인해보자.

\>mail -u \[user명\]

\> h (메일 리스트확인)

\> t \[메일번호\] (\[메일번호\]의 메일읽기)

cron Environment 및 crontab 환경정보까지 보내준다.

crontab을 실행하는 user가 daemon인가보다..

daemon의 $PATH는 아래와 같다.

crontab을 실행시키는 daemon 유저가 java7을 PATH로 잡고있는걸 확인할 수 있다.

sh을 실행할 계정에서 실행할 .sh에 PATH를 java8로 재지정 하여 export하였다.

PATH 재지정 후 crontab에 등록 된 .sh이 정상작동 하는걸 볼수있다.

'Issue Handling' 카테고리의 다른 글

[jboss] GlobalTransaction Error  (0) 2019.06.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
Total
Today
Yesterday