我想在我的java项目中使用Trove-1.0.2 jar作为地图。我使用eclipse IDE。我在构建路径中使用“添加外部jar”添加了Trove jar,但仍然得到了ClassNotFoundException。
但是当我检查时,类gnu.trove.THashMap存在于库中。
Error: java.lang.ClassNotFoundException: gnu.trove.THashMap
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:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at com.a.VCLReduce0.reduce(VCLReduce0.java:38)
at com.a.VCLReduce0.reduce(VCLReduce0.java:1)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
答案 0 :(得分:0)
检查Eclipse中的Runtime类路径(尽管默认情况下库应该存在)。我猜你使用Run菜单在Eclipse中运行它。
如果它在类路径上,可能是Trove-1.0.2 jar本身具有你尚未添加到构建路径的依赖项,尽管我已经使用Maven Central进行了检查,这似乎不是情况下。
答案 1 :(得分:0)
要在hadoop上运行作业,您需要有一个独立的jar文件,其依赖项要么在jar中解压缩,要么在清单中指定。
有关从eclipse运行hadoop作业的一些提示,请参阅此问题:Launch a mapreduce job from eclipse
他们也提到了这篇文章,似乎有一些关于设置eclipse的好信息:http://www.mapr.com/blog/basic-notes-on-configuring-eclipse-as-a-hadoop-development-environment-for-mapr