2

我想在我的 java 项目中为地图使用 Trove-1.0.2 jar。我使用 Eclipse IDE。我在构建路径中使用“添加外部 jars”添加了 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)
4

2 回答 2

0

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

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

如果它在类路径上,则可能是 Trove-1.0.2 jar 本身具有您尚未添加到构建路径中的依赖项,尽管我已经与 Maven Central 进行了检查,但似乎并非如此。

于 2013-03-06T17:00:23.180 回答
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

于 2013-03-06T17:22:04.117 回答