Trove jar没有找到THashMap类的异常

时间:2013-03-06 16:03:45

标签: java eclipse trove4j

我想在我的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)

2 个答案:

答案 0 :(得分:0)

检查Eclipse中的Runtime类路径(尽管默认情况下库应该存在)。我猜你使用Run菜单在Eclipse中运行它。

  1. 右键单击主类。
  2. 选择“运行方式 - >运行配置...”
  3. 在对话框的左侧展开Java Application。如果你看到 列出您的主类,选择它,否则单击“新启动” 配置“选项并确保它显示您的主类名称 “主类”字段。
  4. 单击ClassPath选项卡,查看是否列出了Trove.jar文件。 如果没有,则添加它并运行应用程序。
  5. 如果它在类路径上,可能是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