0

私のセットアップは次のとおりです。

Android プロジェクト A と Java プロジェクト B があります。プロジェクト A はプロジェクト B のいくつかのファイルを使用します。

私の開発環境は Eclipse で、プロジェクト B をビルド パスに含め、「注文とエクスポート」用にマークしました。

プロジェクトは正常にビルドされますが、実行時に

プロジェクト B からクラスを参照しようとすると、java.lang.NoClassDefFound エラーが発生します。

どうすればこれを解決できますか?

私はEclipse JunoとADT 20.0.3を使用しています。

ありがとう。

4

4 に答える 4

0

同じプロジェクト自体で別のクラスを参照しようとしたときに同じ問題が発生しました.私の場合、Androidの依存関係を再確認すると問題は解決しました. 1 つの必須ファイルに対して 2 つの jar ファイルを追加しました。私のプロジェクトには android-support-v4.jar ファイルが必要でした。誤ってライブラリを 2 回追加しました。そのうちの1つを削除すると、エラーは解決しました。

于 2014-07-03T12:50:56.760 に答える
0

Eclipse と ADT を更新したという話で、環境も Java 7 に変更したのではないでしょうか? その場合、答えは次のようになります。Java 7 は (まだ?) Android でサポートされていないため、Java 1.6.x に戻します。

以下の「コンパイラ準拠レベル」を変更する必要があります。

ウィンドウ - 設定 -- Java - コンパイラ - コンパイラ準拠レベル

それがうまくいくことを願っています、少なくとも私にとってはうまくいきました: Android-Project から標準の Java-Project を参照するときの NoClassDefFoundError

于 2013-03-21T10:10:22.677 に答える
0

私の場合、これは AIDE 開発環境を使用しているときに発生していました。過去1年間に数回発生しました。

Java ダイヤモンド演算子を使用して関数のジェネリック型を指定すると、プログラムはコンパイルされますが、Dalvic エンジンは NoClassDefFound 例外でクラッシュします。

これを修正するには、ジェネリック型を明示的に定義する必要がありました。

ちなみに、このクラッシュは、実際に問題が発生している場所とはまったく異なる場所で発生する可能性があります。たとえば、クラス A と B があります。悪いコードは A.myMethod() にあります。クラス B がクラス A の任意の部分にアクセスしようとすると、A.myOther() メソッドなどの無関係なものであっても、クラッシュが発生します。

これは、Java/Dalvic が実行時に最初にアクセスしたときにのみクラスをロードする方法によるものです。

于 2014-12-05T10:43:31.507 に答える
0

必要な Java クラスを jar にエクスポートして、その jar を Android プロジェクトに含めることもできます。

于 2013-03-21T10:37:25.397 に答える