21

ほとんどのデバイスでアプリを実行できますが、次のエラー レポートが表示されます。

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.company.app/com.company.app.MainActivity}: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854)
at android.app.ActivityThread.access$2300(ActivityThread.java:136)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:5068)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newActivity(Instrumentation.java:1034)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747)
... 11 more

関連する回答があることがわかりました: ClassNotFoundException Android

しかし問題は、私が書いたコード行の前に私の例外が発生することです.どうすればクラスローダーが確実にロードされるのでしょうか?

4

12 に答える 12

20

私はまったく同じ問題を抱えていました。突然アプリが動かなくなりました。私はマニフェストに変更を加えませんでしたが、何らかの事故で最初の行が欠落していました:

<?xml version="1.0" encoding="utf-8"?>

これによりClassNotFoundException、ランチャー アクティビティが発生しました。私はそれに数時間苦労していましたが、間違いの可能性がないかマニフェストをチェックするたびにこれを見落としていました。

この行を再度削除した後、奇妙なことが起こりました。サプライズ、サプライズアプリはまだ動いていました。(そして、アプリを再構築することを忘れていませんでした)

これが誰かが数時間を節約するのに役立つことを願っています.

于 2013-01-27T22:01:40.560 に答える
11

クラスがマニフェストで正しく定義されていない場合にこのエラーが発生します。通常、次のように正しい名前空間を入力していないためです。

    <activity android:name="com.company.project.main.MyMainActivity" ...>

とは対照的に

    <activity android:name="MyMainActivity" ...>

ただし、一部のデバイスでは機能し、他のデバイスでは機能しない理由はわかりません.

于 2011-05-27T04:45:59.150 に答える
3

私は同じ問題を抱えていましたが、問題は Android サポート ライブラリを使用しているサード パーティのライブラリでした。

myproject/libs/android-support-v4.jar 
3rdpartylib/libs/android-support-v4.jar

ライブラリを新しいバージョンに更新すると、サポート ライブラリも更新されましたが、私のプロジェクトでは更新されませんでした。その後、このエラーでアプリケーションを起動できませんでした。両方のライブラリを同じ(コピー)にしたらOKでした。

于 2013-12-06T10:11:42.247 に答える
2

Eclipse で、[プロパティ] > [Java ビルド パス] > [ソース] を確認し、出力フォルダーが常にデフォルト (/bin/classes) になっているかどうかを確認します。

私にとって、これはMavenプラグインが原因で問題でした.右クリック> Maven> Update Project ...> OKのたびに、srcフォルダーの出力フォルダーがtarget/classesに変更され、ClassNotFoundExceptionが発生します。

于 2014-07-18T08:16:01.837 に答える
1

ここ数日間、この問題がありました。すべてのテスト環境でアプリを実行し、リリース apk をエクスポートして、すべてのテスト環境でインストールして実行することができましたが、apk をプレイ ストアにアップロードしてプレイ ストアからインストールすると、アプリは ClassNotFoundException をスローして終了します。 . 私のプロジェクトでは、マルチパート フォーム データを Web API に送信していたことが判明しました。これを行うには、いくつかの外部ライブラリが必要です。最初は、、、および (多くの jar ファイルであることが判明しました) をすべて含めmim4jましhttpclienthttpcore .jars

それらのほとんどすべてを1つずつ削除し、プロジェクトがまだビルドされるかどうかを確認した後、実際に必要なjarが1つだけ残っていまし。要点は、ビルドに不要な jar を削除することです。次に、アプリをテストしたところ、プロジェクトのビルドに必要なリソースによってリソースが参照されていたため、jar の 1 つを追加し直す必要があることがわかりました。jar を削除した後は、アプリのすべての機能を必ずテストしてください。

次に、含めていた各ライブラリ プロジェクトをproject -> properties -> java build path -> order and export調べて右クリックし、すべてのボックスFOR EVERY LIBRARYおよびMY OWN PACKAGEをオンにしました。

次に、project -> clean含まれているすべてのプロジェクトとメイン プロジェクトを実行しました。

次に、apk をエクスポートし、ベータ テスト用にパッケージを公開したところ、最終的にユーザーのデバイスで動作しました。

于 2014-06-24T17:22:44.200 に答える
1

上記の答えはどれも私にとってはうまくいきませんでした。将来誰かに時間を割くつもりなら、私の解決策に貢献してください。

どうやら私にとってうまくいったのは、プロジェクトで余分なサポート lib v4 jar を削除することでした。

Android ツールを介してサポート ライブラリを更新した後、使用する多くのライブラリで jar の不一致を修正し、それらすべてを android-sdks フォルダー内の同じ jar にポイントする必要がありました。

誤ってプロジェクトにも追加しましたが、何らかの理由で、実行時に MainActivity クラスが見つかりませんでした。使用していた android-support-v7-appcompat ライブラリにも jar が含まれていたためです。

日食でエラーはまったくありません。

プロジェクトから jar を削除し、エクスポート タブで v7 appcompat ライブラリの jar をチェックして、プロジェクトでも使用できるようにしました。ほら、アプリが機能しています。

于 2015-08-22T14:59:07.410 に答える
1

この問題に遭遇し、これを使用して修正されました。

「注文とエクスポート」で外部ライブラリを1つもチェックしていなかったので、エラーが発生しました。

于 2014-07-16T00:39:45.737 に答える
0

次のフォルダーをコピーして新しいプロジェクトに貼り付け、同じパッケージ名を保持して解決しました。

  • ../ソース/デバッグ
  • ../src/メイン
  • ../src/リリース

最後に、ファイルの依存関係を追加しましたbuild.gradle

GL

于 2018-12-20T07:36:17.930 に答える