我正在开发一个eclipse插件rcp而且我遇到了NoClassDefFoundError
Exception in thread "Thread-7" java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder at org.geonames.WebService.search(WebService.java:783) at geo.GeocoderGeonames$SearchThread.run(GeocoderGeonames.java:119) Caused by: java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 2 more
无法找到的类位于我已添加到构建路径的jar中。当正在运行的应用程序输入需要此类的代码时,我没有得到任何编译错误等仅此异常...
我需要添加jar的其他地方
答案 0 :(得分:1)
阅读this后,将jar添加到MANIFEST.MF,解决了问题。 据我了解,eclipse启动了几个类加载器,它们只能看到MANIFEST.MF告诉他们看到的内容和内置路径...
答案 1 :(得分:0)
你是如何运行插件的?您可能需要将JAR添加到VM参数中的类路径中。
答案 2 :(得分:0)
根据我们的经验,NoClassDefFoundError
有时可能意味着找到了多个版本的类,因为如果找不到类,通常会抛出ClassNotFoundException
。
您的案例中的另一个原因(XML解析器)可能是带有背书的类。你直接导入jdom类或类似org.w3c ......?如果是这样,请查看Java的“认可课程”系统,这是我最近遇到的。