web-dev-qa-db-ja.com

NoClassDefFoundError-EclipseおよびAndroid

ビルドパスに2つ目の外部ライブラリを追加するまで、Androidアプリを実行しようとして問題が発生しました。 scoreninja jarを追加したので、アプリを実行しようとするとNoClassDefFoundErrorになります。

メッセージは次のとおりです。

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): Java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

ビルドスクリプトはすべてAndroidツール(?)によって生成されるため、Eclipseのクリーニングと再構築、または再起動以外に何ができるかわかりません(3つすべてを試しました)。誰も私がこれを修正する方法を知っていますか?

194
Tom R

ADTの更新後にこの問題が発生しました。

私はすべてのJARファイルを「lib」というフォルダーに保存し、通常のEclipseの方法でjarをビルドパスに追加していました。これは私の更新まで問題なく機能しました。

更新後、jarに含まれていることがはっきりとわかるクラスのNoClassDefFoundErrorを取得していました(ReferencedLibrariesクラスをチェックアウト)。

解決策は、jarをビルドパスから削除し、「lib」フォルダーの名前を「libs」に変更することでした。これはantの規則であり、新しいADTが.apkファイル内のライブラリを見つけて含める方法のようです。これを実行すると、すべてが正常に機能しました。

234
John O'Connor

Jar-libraryをassetまたはlib(s)に入れる必要はありませんでしたが、Properties-> Java Build Path-> "Order and Export"(これは前にリストされているが、選択されていない)

100
Till

外部jarをビルドパスに追加すると、jarがパッケージに追加されるだけですが、実行中は使用できません。

Jarをruntimeで使用可能にするには、以下を行う必要があります。

  • Jarをassetsフォルダーの下に配置します
  • Jarのこのコピーをビルドパスに含めます
  • 同じポップアップウィンドウの[エクスポート]タブに移動します
  • 新しく追加したjarに対してボックスをチェックします
68

これはMapActivityにありました。 Eclipseのビルドは、デバッガーでNoClassDefFoundを取得します。

<Application>...</Application>要素内のマニフェストにライブラリを追加するのを忘れた

<uses-library Android:name="com.google.Android.maps" />
48
brian.clear

含まれるプロジェクトの順序を変更しました(Eclipse /ビルドパスの構成/順序とエクスポート)。 2つの依存プロジェクトを「注文とエクスポート」リストの一番上に移動しました。問題「NoClassDefFoundError」を解決しました。

私には奇妙です。含まれるライブラリとプロジェクトの順序の重要性については聞いていませんでした。 Android + Eclipseは楽しいです:)

27

これが関連しているかどうか、またはあなたがまだ答えを探しているかどうかはわかりませんが、同じエラーを調査しようとしたときにこのスレッドに出会いました(ただし、異なる理由が考えられます)。

私はオンラインで解決策を見つけることができませんでしたが、同様のスレッドに対する答えは私に考えさせられ、おそらくプロジェクトを再構築(またはクリーンアップ)するだけでよいことに気付きました。

Eclipseで、Project => Cleanに移動します。プロジェクトを選択すると、Eclipseがそれ自体を修正したようです。私にとってこれは問題を解決しました。

お役に立てれば。

15
Brian

同じ問題が発生しました。理由は、使用しようとしているライブラリが標準のJDK 7でコンパイルされていたためです。

-source 1.6 -target 1.6オプションを使用して再コンパイルしたところ、正常に機能しました。

13
assylias

同じことが私のために働いた:プロパティ-> Javaビルドパス-> "注文とエクスポート"興味深いことに-なぜこれが自動的に行われないのですか?設定が不足していると思います。また、これはSDKのアップグレード後に私のために起こった。

7
vlad

ジョン・オコナーはこの問題について正しいです。問題は、ADT 17以降のインストールにあります。エラーを修正するための次のリンクを見つけました:

http://Android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

3
user1555123

プロジェクトフォルダーを右クリックし、Javaビルドパスのプロパティを探して、表示されるjarファイルを選択します。それは私のために働いた。

3
zacharia

ADT22でも同じエラーが発生しました。プロパティ-> Javaビルドパス->順序とエクスポートで「Android Private Libraries」をチェックして解決しました。ライブラリプロジェクトを使用している場合、それらについても同様に行う必要があります。

2
prijupaul

私はこの投稿(および他のいくつかの投稿)からすべてを試しましたが、それは私にとってはうまくいきませんでした、これは私が経験した中で最もひどいADTアップグレードであり、ADTバックアップが機能しない限りアップグレードすることはありません。

私はプロジェクトを削除し、それからソースバックアップを使用して再度追加することでそれを解決しました。

2
Eli

私の場合は少し違うので、既存の答えはすべてうまくいきません。動作させるのに数時間かかりました。 Eclipseを使用しています。

Androidプロジェクトには、サードパーティのjarファイルを必要とする別の通常のJava 1.6プロジェクトが含まれています。トリックは次のとおりです。

  • jarを通常のJavaプロジェクトに含めてコンパイルします(のみ)。[Order and Export]タブでチェックしないでください。
  • また、このjarファイルをAndroidプロジェクトの「libs」フォルダーにコピーして、ランタイムで使用できるようにします

これが私のような類似のシナリオを持っている人を助けることを願っています。

2
Donald

AndroidManifest.xmlに「uses-libary」タグが付いた依存関係のあるjarが含まれていないために発生する場合があります。

また、「application」タグ内にあることを確認してください。

よろしく、

ラビ

1
Ravi Pandit

この問題が発生したのは、ライブラリを「エクスポート」していないことが原因でした。問題は、APKのパッケージ化中に一部のクラスの.classファイルが使用できないためでした。コンパイル時間は問題なく動作します

私の場合、「CusrsorAdapter」クラスを使用しており、「JavaBuildPath-> Order and Export」の下で、サポートV4 jarを確認しませんでした。選択された問題はなくなりました。

上記の理由でnoClassDefFoundエラーが発生していることを確認するには、logacatを確認してください。実行時に不明なスーパークラスエラーが表示されます。

1
Sojan P R

場合によっては、jarだけでなく外部プロジェクト全体をライブラリとして取得する必要があります:

私の問題は、jarだけでなくプロジェクト全体(私の場合はgoogle-play-services_lib)をライブラリとして追加することで解決しました。その手順( @ style answer から):

  1. ファイル->新規->その他
  2. Android Projectを選択します
  3. 「既存のソースからプロジェクトを作成」を選択します
  4. [参照...]ボタンをクリックして、目的のプロジェクトに移動します
  5. 終了(ワークスペースの現在のアクションバープロジェクト)
  6. プロジェクトを右クリック->プロパティ
  7. Android-> Libraryセクションで、Addをクリックします
  8. 最近追加されたプロジェクトを選択-> OK
1
dvrm

これを試して:-

ステップ1

すべてのライブラリを追加して、Eclipseでpatをビルドします(すべてのライブラリがライブラリを参照することを意味します)

ステップ2

R.Javaファイルを削除して、プロジェクトを再度ビルドします。心配しないでください。R.Javaは自動的に再作成されます。

チル:)

0
user1606195

aDTを更新した後、この問題を解決するために2日間を費やしました。最後に、この投稿をここで入手できて幸運でした:

https://code.google.com/p/Android/issues/detail?id=55304

それが正しい方向に私を導いた。ソリューションに従う場合-すべてのプロジェクトのAndroidサポートライブラリを同じバージョンに置き換えることを忘れないでください(削除して、プロジェクトに再インストールします)。これがお役に立てば幸いです-幸運を

0
Ron

私はさまざまなことを試しましたが、私の場合のエラーの原因は、Java Build Path-> Librariesのmaps.jarとGoogle Apiの競合です。したがって、maps.jarを削除したときは正常に機能しました。

よろしく、

ワヒブ

0
Wahib Ul Haq

eclipseで新しいADTバージョンを使用している場合、jarファイルがプロジェクトのlibsディレクトリにあることを確認してください。

0
samir

実際には、悪名高い64kの制限の問題に到達したため、multidexを有効にする必要があります。

これがあなたのやり方です。 https://developer.Android.com/tools/building/multidex.html

0
Ashish Rawat

これは私には非常に頻繁に起こります。

前回思い出したのは、Eclipse ADT(Googleスペシャルエディション)をAndroid St​​udioに切り替えてから元に戻したことです。私は基本的に、私にとってはうまくいかなかったstackoverflowで見つけられるすべての方法を試しました。

最終的に、ADTでIDEを元のEclipse(Kepler)に切り替えることで、アプリが再び動作するようになりました(NoCalssDeffoundErrorがなくなりました)。

0
tyolab

順序を変更してプロジェクトビルドパスでエクスポートする場合、このエラーは発生しません。それを実現するもう1つの方法は、プロジェクトフォルダーの.classpathを使用することです。

0
geekgugi

私はまったく同じ問題を抱えていました...それを修正するために、「ビルドパス」のAndroidプライベートライブラリを削除して[OK]をクリックしました。それらを再び単独で追加し、それが私のために働いた;)...

0
pkdkk

回避策がどのファイルに関連しているかを知りたい場合は、ここで見つけました。 .classpathファイルを単純に変更します

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.Android_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

すべてのライブラリプロジェクトとメインAndroidプロジェクトの.classpathファイルを置き換えます。 .classpathファイルは、Eclipseプロジェクトのルートフォルダーにあります。原因として、独自のクラスパスエントリを追加することを忘れないでください(ある場合は、現在のバージョンの.classpathと比較してください)。

これは、上で説明したコンポーネントユーザー(Eclipse /ビルドパスの構成/順序とエクスポート)としてEclipseメニューを使用した場合と同じ結果だと思います。

0
arberg

解決策 ここ 私のために働いた。ライブラリをlibsフォルダーにインポートし、build.gradleファイルを変更してからgradlewでクリーニングするだけです。

0
gabr10

私が理解したように、Jarを含めたため、プロジェクトにエラーは表示されません。ただし、プロジェクトがデバイスに「エクスポート」されると、Jarは使用されません。これを試して

プロジェクト->プロパティ

Javaビルドパス/注文とエクスポート

[✔]あなたの瓶

0
user3060608