我想在我的 java 项目中使用 Trove-1.0.2 jar 作为 map 。我使用 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)
最佳答案
检查 Eclipse 中的运行时类路径(尽管该库默认情况下应该存在)。我猜您是在 Eclipse 中使用“运行”菜单运行它。
- 右键单击您的主类。
- 选择“运行方式 -> 运行配置...”
- 展开对话框左侧的 Java 应用程序。如果你看到 列出您的主类,选择它,否则单击“新启动” Config”选项并确保它在中显示您的主类名称 “主类”字段。
- 单击 ClassPath 选项卡,查看是否列出了您的 Trove.jar 文件。 如果没有,则添加它并运行应用程序。
如果它位于类路径上,则可能是 Trove-1.0.2 jar 本身具有您尚未添加到构建路径中的依赖项,尽管我已经检查了 Maven Central,但这似乎不是案例。
关于java - Trove jar THashMap 类未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252211/