【发布时间】:2016-07-10 02:09:02
【问题描述】:
我使用来自this blog 的 java 文件创建了一个 jar 文件,并使用以下语句
javac -classpath /usr/local/hadoop/hadoop-core-1.0.3.jar -d /home/hduser/dir Dictionary.java
/usr/lib/jvm/jdk1.7.0_07/bin/jar cf Dictionary.jar /home/hduser/dir
现在我已经尝试在 hadoop 中运行这个 jar 并尝试各种命令
1hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop jar Dictionary.jar
输出:
Warning: $HADOOP_HOME is deprecated.
RunJar jarFile [mainClass] args...
2.hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop jar Dictionary.jar Dictionary
输出:
Warning: $HADOOP_HOME is deprecated.
Exception in thread "main" java.lang.ClassNotFoundException: Dictionary
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)
如何在 hadoop 中运行 jar?根据我的程序的需要,我拥有正确的 DFS 位置。
【问题讨论】:
-
错误提示找不到类。确保你的 jar 有这个类。再次,您的 Dictionary 类需要有一个 main 方法。