2

Android アプリの実行時に classdefnotfound エラーが発生します。この 1 つのクラスを除いて、すべて正常に動作します。以前は、このクラスは機能していました。クラスは実際には外部ライブラリにあり、すべてのライブラリは正しいです。日食でこのようなものに出くわした人はいますか? 環境の問題のように感じます。

このクラスは、Google API クライアント ライブラリ バージョン 1.4.1 にあります。

classdefnotfound: com.google.api.client.xml.XmlNamespaceDictionary;

jar ファイルは lib ディレクトリと .classpath ファイルにあります。

4

5 に答える 5

2

この問題は予想外に発生し、提案された解決策では実際に修正できませんでした。結局のところ、このブログ投稿は非常に役に立ちました。つまり、すべてのライブラリをlibsではなくlibフォルダーに置き、それらを Eclipse のビルド パスに追加しました。ただし、後者の場合、Android はライブラリを自動的に追加します。フォルダーの名前をlibsに変更し、クラスパスへの以前の手動変更を削除すると、問題が修正されました。

于 2012-05-24T19:49:35.637 に答える
2

このクラスがアクティビティの場合は、必ず AndroidManifest.xml ファイルに追加してください。

于 2011-06-09T16:19:54.377 に答える
1

私が気付いたことから、このエラーは通常 ClassNotFoundException が原因で発生し、私の場合、アプリが実行されていた Android OS のバージョンのリリース時にまだ導入されていないインターフェイスを実装していたため、この例外がスローされました...これにより、実行時にクラスが認識されないようです。

于 2020-07-30T22:58:17.117 に答える
0

これは、プロジェクトをエクスポートして難読化を使用するときに発生することがあります。Proguard は、manifest.xml でのみ言及され、コードで直接使用されていないクラス (イントロスペクション クラスの読み込みなど) を消去します。

その場合、クラスを保持するように proguard を構成し、proguard.cfg を見て、クラスの行を追加する必要があります。

また、これがエクスポートされたアプリではなくデバッグ モードで発生した場合は、apk ファイルを解凍し、dexdump を使用して、クラスが dex ファイルに含まれているかどうかを確認できます。

dexdump は android SDK に付属しており、apk で classes.dex を逆コンパイルするために使用できます。

よろしく、
ステファン

于 2011-06-09T16:22:34.847 に答える
0

わかりました、私はそれを理解しました(8時間の髪の引っ張りの後!)。Google クライアントの lib jar ファイルは、別のプロジェクト (機能していたプロジェクト) にありました。それらを参照ライブラリとしてプロジェクトに追加しました。何らかの理由で、コンパイル時に追加されませんでした。解決策: 実際の jar ファイルを /lib ディレクトリにコピーし、参照されているライブラリを削除して Eclipse のビルド パスを更新しました。

于 2011-06-10T01:01:08.897 に答える