类仍然没有找到

问题描述:

我正在开发一个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

阅读后this将jar添加到MANIFEST.MF中,解决了问题。 按照我的理解,日食开始几类加载器只看到的MANIFEST.MF告诉他们看到和ingnores构建路径...

你是如何运行你的插件?您可能需要将JAR添加到VM参数中的类路径中。

+0

我跑它作为Eclipse应用... – jau 2009-04-16 14:52:52

根据我们的经验,NoClassDefFoundError有时可能意味着找到一个类的多个版本,因为还有一个ClassNotFoundException,如果找不到类,通常会引发该错误。

您的情况(XML解析器)的另一个原因可能与授权类有关。你是直接导入jdom类还是类似org.w3c ...?如果是这样,请查看一下我刚刚遇到的Java的“支持类”系统。

+0

的NoClassDefFoundError将被抛出,如果编译的代码是指不在类路径上的类。如果尝试使用反射来实例化一个类时,将抛出ClassNotFoundException,则无法找到名为class的类。 – akf 2009-12-18 14:05:58