2013-11-23 91 views
1

我有一個hadoop應用程序。我寫了一個java程序,它需要org.json.jar包以及hadoop-core.jar。我用下面的linux命令編譯這個源文件。如何用多個外部jar編譯java源文件?

mkdir q3_classes 
javac -classpath ${HADOOP_HOME}/hadoop-core.jar:${HADOOP_HOME}/org.json-20120521.jar -d q3_classes ETLQ3.java 
jar -cvf q3.jar -C q3_classes/ . 

它編譯成功。但是當我用下面的命令運行這個程序。 (同樣的命令適用於WordCount示例。)

hadoop jar q3.jar MainClassName /input /output 

它引發ClassNotFound異常。 org.json.object類找不到。

所以我不知道我的編譯命令有什麼問題嗎?如何用這兩個jar包編譯java源文件?

回答

0

我想你的類路徑中沒有JAR。將它們添加到你的類路徑中。

+0

謝謝。你能告訴我怎麼做? – Duran

+0

@ user3023526在你的例子中,你似乎*在你的類路徑中有jar。你的'HADOOP_HOME'指向正確嗎? –

+0

是的。因爲我在沒有org.json.jar的情況下使用相同的命令運行WordCount。它運行正常。 – Duran

0

您可能需要將罐子org.json-20120521.jar發送到羣集的所有節點。嘗試使用--libjars選項

Hadoop的罐子q3.jar MainClassName /輸入/輸出--libJars org.json-20120521.jar

確保你下面說什麼來here in the edit part如何實際編寫的MapReduce應用程序。