奇妙なエラーに遭遇しました。特に、外部ライブラリを使用するAndroidプロジェクトがあります:
プラグインのいくつかの側面を更新するまで(あまり注意を払っていなかったため、詳細を思い出せません)、その後、上記の.jarファイル(またはそのサブクラスのうち、私が定義したものであっても)、Java.lang.NoClassDefFoundErrorが発生します。何度も調べても答えが見つからなかったので、本当に困っています。
この問題は私のIDEの設定方法に関連していて、実際のコードとはほとんど関係がないので、どうしても必要な場合を除いて投稿しません。
これを読む必要があります- Androidプロジェクト の依存関係を扱う。
このリンクも役立ちます- ClassDefNotFoundError with ADT 17
基本的に、libs
というフォルダーを作成し、その中にすべてのjar
ファイルを配置します。最近の更新により、残りは自動的に処理されます。パスを編集する必要はもうありません。
AndroidはこれまでJava1.7をサポートしていません。コンプライアンスレベル1.7でビルドされたjarは、Androidアプリケーションでは使用できません。jarファイルをエクスポートする前に、コンプライアンスレベル5.0または6.0でJavaプロジェクトを再ビルドしてください。
私はグーグル経由でこの投稿を見つけました、そして上記の答えは私の問題を解決しませんでした。私の言うことが他の人の役に立つことを願っています。
ADT 22にアップグレードした後にNoClassDefFoundError
が表示された場合は、Eclipseでこれを試してください。
また、多くの依存関係を持つr17に更新した他の人への警告。ビルドパスに別の参照プロジェクトがありましたが、インターネットでこのr17の問題に関するすべての指示に従った後でも、それは機能しませんでした。
1時間後、参照されたプロジェクトがメインプロジェクトよりも古いバージョンの外部Jarを使用していることがわかりました。メインプロジェクトをコンパイルしようとすると、このjarバージョンの違いのためにEclipseが諦め、コンソールに警告メッセージが表示されることに気づきませんでした。
解決策は、新しいバージョンの外部jarファイルを参照されているプロジェクトのlibsディレクトリにコピーすることでした。
うわー-そのような生産性キラー.....
私がそれを解決した方法は次のとおりでした:プロジェクトを右クリックしてビルドパスを選択します。表示される選択肢から[ビルドパスの構成]を選択します。その後、ライブラリがライブラリフォルダにあるかどうかを確認し、[注文とエクスポート]タブを選択して、そこにあるすべてのjarファイルを選択します。次に、[OK]を選択して、プロジェクトを実行します。
Android SDK、r17にアップデートしたため、今日もこのエラーが発生しました。 @anealが指摘しているリンクで説明されていないのは、外部ランタイムライブラリ(インポートされたユーザーライブラリではなく、独自の見出しでインポートされたライブラリなど)を処理する方法です。
この問題を解決する最も簡単な方法は、ビルドパスのビルド順序を変更することです。プロジェクトを右クリックして、プロパティを選択するだけです。ここから、Javaビルドパスを選択します。ディスプレイの上部で、タブorder and exportを選択し、GoogleAdMobAdsSdk-4.3.1.jar上に移動します- Android X(xを使用しているバージョンに置き換えます)。次に、プロジェクトをクリーンアップして実行します。あなたは行ってもいいはずです!
MavenでEclipseを使用している場合IDE(m2e) "Java Build Path"、[Order and Export]の順に移動し、最後に[MavenDependencies]項目をチェックして下部にプルダウンします。同じワークスペース内のプロジェクト参照でも同じことを行う必要があります。新しいコンピューターでプロジェクトをセットアップするたびに発生します。