2017-03-09 78 views
1

我正在從通過Oozie的shell腳本中的Java程序,我得到下面的錯誤Oozie--的java:找不到命令 - 殼行動

java: command not found 

當我運行從邊緣節點我的shell腳本沒有發現任何問題,並且java類沒有任何錯誤地運行,我也得到了期望的輸出。但是,它是運行java命令失敗的oozie作業。

oozie中的所有其他操作都會執行,但是當它遇到java行時,它會拋出上述錯誤。我知道Hadoop集羣中的所有節點都將安裝Java,那麼爲什麼會出現此錯誤? 下面是java命令,我在我的shell腳本

... 
...  
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'命令的位置。在一個可以成功調用JVM的環境中,將此環境中的'echo「$ PATH」'與'echo「$ PATH」'進行比較。 –

+1

...當然,Java可能會被安裝*,但問題是它安裝的位置目前是否在當前進程的PATH *中。許多操作系統將JVM安裝在'/ usr/lib/jvm/java8-jre-bin'等位置,並且守護進程可能沒有在PATH中的那個位置(無論確切的相關/正確的位置)。 –

+0

順便說一下,全部大寫名稱用於具有操作系統或shell的含義的變量,而具有至少一個小寫字符的名稱則保留給應用程序使用,以防止應用程序錯誤地覆蓋有意義的名稱。請參閱相關的POSIX規範,網址爲http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html –

回答

0

「發出定額」

我與我的DevOps的後話,發現的Java類路徑在集羣幾個數據節點沒有設置。這是停止shell動作以在這些datanode上調用JVM。 修復Classpath後,作業成功運行。 @Charles Duffy提及的所有評論均有效。

-1

你有你的集成tools.jar與你的代碼jar在hdfs位置嗎? Oozie可以選擇任何節點來運行java操作,它會在該位置查找這些jar。

+1

這似乎是JVM本身未找到,而不是找不到JAR。 –

+0

我第二@CharlesDuffy,因爲錯誤清楚地說'java:command found'這是一個明確指示java未被安裝或java的位置未在classpath中設置的明確指示。 –