我正在编写使用opennlp的代码。我的代码在eclipse上运行得非常好,但是当我在集群上运行它的jar时,会出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: opennlp/tools/util/ObjectStream
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
Caused by: java.lang.ClassNotFoundException: opennlp.tools.util.ObjectStream
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
... 3 more
1条答案
按热度按时间a14dhokn1#
您需要在任务的类路径中提供opennlp jar。有几种选择:
-libjars
和hadoop\u类路径,请参阅将libjars选项用于hadoop“fatjar”:构建一个包含所有必需jar的jar,然后提交fatjar
在所有节点上安装第三方jar(即使集群具有“第三方意识”)
使用hdfs分布式缓存并在代码中下载必要的jar
有关更详细的讨论,请参见如何:在mapreduce作业中包含第三方库