如何使用多个外部jar编译java源文件?
我有一个hadoop应用程序。我编写了一个java程序,它需要org.json.jar包和hadoop-core.jar。我使用以下linux命令编译这个源文件如何使用多个外部jar编译java源文件?,java,json,hadoop,Java,Json,Hadoop,我有一个hadoop应用程序。我编写了一个java程序,它需要org.json.jar包和hadoop-core.jar。我使用以下linux命令编译这个源文件 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/ . 它编译成功。但是
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示例。)
它抛出ClassNotFound异常。找不到org.json.object类
所以我想知道我的compile命令有什么错误吗?如何用这两个jar包编译java源文件?我想您的类路径上没有jar。将它们添加到类路径。您可能需要将jar
org.json-20120521.jar
发送到集群的所有节点。尝试使用--libjars选项
hadoop jar q3.jar MainClassName/input/output--libJars org.json-20120521.jar
请确保您遵守了关于如何实际编写MapReduce应用程序的说明。谢谢。你能告诉我怎么做吗?@user3023526从你的例子来看,你的类路径中似乎有jar。你的
HADOOP\u主页
指向正确吗?是的。因为我在没有org.json.jar的情况下使用相同的命令运行WordCount。它运行正常。尝试将类添加到java
类路径中,作为java-cp/your/class/path
,看看是否有帮助。无论您对javac
拥有什么样的类路径,都要为java
添加它,但我希望作业在hadoop集群上运行。怎么做?
hadoop jar q3.jar MainClassName /input /output