2009-04-16 92 views
0

我正在開發一個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

回答

1

閱讀後this將jar添加到MANIFEST.MF中,解決了問題。 按照我的理解,日食開始幾類加載器只看到的MANIFEST.MF告訴他們看到和ingnores構建路徑...

0

你是如何運行你的插件?您可能需要將JAR添加到VM參數中的類路徑中。

+0

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

0

根據我們的經驗,NoClassDefFoundError有時可能意味着找到一個類的多個版本,因爲還有一個ClassNotFoundException,如果找不到類,通常會引發該錯誤。

您的情況(XML解析器)的另一個原因可能與授權類有關。你是直接導入jdom類還是類似org.w3c ...?如果是這樣,請查看一下我剛剛遇到的Java的「支持類」系統。

+0

的NoClassDefFoundError將被拋出,如果編譯的代碼是指不在類路徑上的類。如果嘗試使用反射來實例化一個類時,將拋出ClassNotFoundException,則無法找到名爲class的類。 – akf 2009-12-18 14:05:58