2017-03-09 5 views
1

내가 Oozie를 통해 쉘 스크립트에서 자바 프로그램을 실행하고 나는 가장자리 노드 I에서 쉘 스크립트를 실행하면 나는 아래의 오류Oozie-- 자바 : 발견되지 명령 - 쉘 액션

java: command not found 

를 얻을 어떤 문제도 발견하지 못하고 java 클래스는 아무런 오류없이 실행되며 원하는 결과도 얻습니다. 그러나 java 명령을 실행하는 데 실패한 것은 오지 작업입니다.

oozie의 다른 모든 조치는 부적절하게 실행되지만 java 행을 만나면 앞에서 설명한 오류가 발생합니다. Hadoop 클러스터의 모든 노드에 Java가 설치되어있는 것으로 알고 있는데 왜이 오류가 발생합니까? 다음은 내가

... 
...  
java -cp $LOCAL_DIR/libs/integration-tools.jar com.audit.reporting.GenerateExcelReport $LOCAL_DIR/input.txt $LOCAL_DIR/ 
... 

의견을주십시오 내 쉘 스크립트에있는 자바 명령입니다.

+1

'java : command not found '는 일반적으로'PATH'가'java' 명령의 위치를 ​​포함하지 않음을 나타냅니다. 이 환경에서'echo "$ PATH"를 JVM이 성공적으로 호출 될 수있는 환경에서'echo "$ PATH"와 비교하십시오. –

+1

... 확실히 Java가 * 설치되어있을 수 있습니다. 그러나 문제는 설치되어있는 위치가 현재 프로세스 *의 PATH에 있는지 여부입니다. 많은 운영 체제는'/ usr/lib/jvm/java8-jre-bin'과 같은 위치에 JVM을 설치합니다. 데몬은 PATH에 정확한 위치와 상관없이 그 위치를 가질 수 없습니다. –

+0

그건 그렇고 - all-caps 이름은 운영 체제 나 쉘에 의미가있는 변수에 사용되는 반면, 하나 이상의 소문자가있는 이름은 응용 프로그램이 실수로 의미있는 이름을 덮어 쓰지 못하도록 예약되어 있습니다. 관련 POSIX 사양은 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html –

답변

0

나중에 내 개발 운영 팀과 이야기 및 Java 클래스 경로가 클러스터에있는 몇몇 데이타 노드에 설정되지 않았 음을 발견 "문제가 해결". 이것은 해당 데이터 노드에서 JVM을 호출하기 위해 쉘 조치를 중지했습니다. 클래스 경로를 수정 한 후 작업이 성공적으로 실행되었습니다. @Charles Duffy에 언급 된 모든 의견은 유효합니다.

-1

hdfs 위치에 코드 jar와 함께 integration-tools.jar가 있습니까? Oozie는 Java 작업을 실행할 노드를 선택할 수 있으며 해당 위치에서 이러한 jar를 찾습니다.

+1

을 참조하십시오. JAR 자체가 발견되지 않고 JVM 자체가 발견되지 않습니다. –

+0

두 번째 @CharlesDuffy 오류가 분명하게 나타나기 때문에 java가 설치되지 않았거나 java의 위치가 classpath에 설정되지 않았 음을 나타내는 명확한 표시 인 java : command found가 표시됩니다. –