0

私はEclipseプラグインrcpを開発していますが、NoClassDefFoundErrorが発生しています

スレッド「Thread-7」の例外 java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder  
    org.geonames.WebService.search(WebService.java:783) で  
    geo.GeocoderGeonames$SearchThread.run(GeocoderGeonames.java:119) で  
原因: java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder  
    org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483)で  
    org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:399) で  
    org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:387) で  
    org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87) で  
    java.lang.ClassLoader.loadClass で (不明なソース)  
    java.lang.ClassLoader.loadClassInternal で (不明なソース)  
    ... 2以上

おそらく見つからないクラスは、ビルドパスに追加したjarファイルにあります。実行中のアプリケーションがこのクラスが必要なコードに入ると、コンパイルエラーなどは発生しません...

jarを追加する必要がある他の場所はありますか

4

3 に答える 3

1

これを読んだ後、jarをMANIFEST.MFに追加し、問題を解決しました。私が理解しているように、Eclipseはいくつかのクラスローダーを開始します。これは、MANIFEST.MFが表示するように指示したもののみを表示し、ビルドパスを無視します...

于 2009-04-16T15:48:26.680 に答える
0

私たちの経験では、クラスが見つからない場合に通常スローされるNoClassDefFoundErrorもあるため、 a はクラスの複数のバージョンが見つかったことを意味する場合があります。ClassNotFoundException

あなたの場合(XMLパーサー)のもう1つの理由は、承認されたクラスを使用している可能性があります。jdom クラスまたは org.w3c などを直接インポートしていますか? もしそうなら、私が最近見つけたJavaの「承認されたクラス」システムを見てください。

于 2009-04-16T14:59:51.440 に答える
0

プラグインをどのように実行していますか? VM 引数のクラスパスに JAR を追加する必要がある場合があります。

于 2009-04-16T14:46:16.917 に答える