ほとんどのデバイスでアプリを実行できますが、次のエラーレポートが表示されます。
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
しかし、問題は、私の例外は私が書くコードの行の前に発生するということです、それでどうすればクラスローダーがロードされていることを確認できますか?
私はまったく同じ問題を抱えていました。突然私のアプリが動作を停止しました。マニフェストに変更を加えませんでしたが、何らかの事故で最初の行が欠落していました。
<?xml version="1.0" encoding="utf-8"?>
これにより、ランチャーアクティビティにClassNotFoundException
が発生しました。私はそれと数時間苦労していましたが、マニフェストに間違いがないかチェックするたびにこれを見落としていました。
この行を再度削除した後、奇妙なことが起こりました。サプライズ、サプライズアプリはまだ機能していました。 (そして私はアプリを再構築することを忘れませんでした)
これが誰かが数時間を節約するのに役立つことを願っています。
クラスがマニフェストで正しく定義されていない場合、通常、次のように正しい名前空間を入力していないため、このエラーが発生します。
<activity Android:name="com.company.project.main.MyMainActivity" ...>
とは対照的に
<activity Android:name="MyMainActivity" ...>
一部のデバイスでは機能し、他のデバイスでは機能しない理由はわかりません。
Eclipseを閉じて開いてください。プロジェクトをクリーンアップして更新します。次に、実行して確認します。
同じ問題が発生しましたが、問題はAndroidサポートライブラリを使用しているサードパーティのライブラリでした。
myproject/libs/Android-support-v4.jar
3rdpartylib/libs/Android-support-v4.jar
ライブラリを新しいバージョンで更新すると、サポートライブラリも更新されましたが、プロジェクトにはありませんでした。その後、このエラーでアプリケーションを起動できませんでした。両方のライブラリを同じ(コピー)にした後、それは大丈夫でした。
Eclipseで、「プロパティー」>「Javaビルドパス」>「ソース」をチェックし、出力フォルダーが常にデフォルト(/ bin/classes)であるかどうかを確認します。
私にとって、これはmavenプラグインが原因で問題になりました。右クリック> Maven> Update Project ...> Okを押すと、srcフォルダーの出力フォルダーがtarget/classesに変更され、ClassNotFoundExceptionが発生します。
私はこの数日間この問題を抱えていました。すべてのテスト環境でアプリを実行でき、リリースapkをエクスポートして、すべてのテスト環境にインストールして実行できましたが、apkをPlayストアにアップロードし、Playストアからインストールすると、アプリは4回閉じてClassNotFoundExceptionがスローされました。 。私のプロジェクトでは、マルチパートフォームデータをWeb APIに送信していたことが判明しました。これを行うには、いくつかの外部ライブラリが必要です。最初は、すべてのmim4j
、httpclient
、およびhttpcore
.jars
を含めました(多くのjarファイルであることが判明しました)。
それらのほとんどすべてを1つずつ削除し、プロジェクトがまだビルドされるかどうかを確認した後、jarが1つだけ残っていました実際に必要でした。持ち帰りは、ビルドする必要のないjarを削除することです。次に、アプリをテストしたところ、プロジェクトのビルドに必要なリソースがリソースを参照していたため、jarファイルの1つを追加し直す必要があることがわかりました。 jarファイルを削除した後は、必ずアプリのすべての機能をテストしてください。
次に、含めた各ライブラリプロジェクトを確認し、project -> properties -> Java build path -> order and export
を右クリックして、すべてのチェックボックスをオンにしましたすべてのライブラリ用および自分のパッケージ。
次に、含まれているすべてのプロジェクトとメインプロジェクトでproject -> clean
を実行しました。
次に、apkをエクスポートし、ベータテスト用にパッケージを作成しました。最終的にユーザーのデバイスで動作しました。
上記の答えはどれも私にはうまくいきませんでした。将来誰かに時間を割くことができるなら、私の解決策に貢献します。
どうやら私のために働いたのは、私のプロジェクトで余分なサポートlib v4jarを削除することでした。
Androidツールを使用してサポートライブラリを更新した後、使用する多くのライブラリでjarの不一致を修正し、それらすべてをAndroid-sdksフォルダー内の同じjarにポイントする必要がありました。
誤ってプロジェクトにも追加しましたが、使用していたAndroid-support-v7-appcompatライブラリにもjarが含まれていたため、何らかの理由でMainActivityクラスが実行時に見つかりませんでした。
Eclipseではエラーはまったくありません。
プロジェクトからjarを削除し、[エクスポート]タブのv7 appcompatライブラリでjarをチェックして、プロジェクトでも使用できるようにしました。アプリは機能しています。
この問題が発生し、 this を使用して修正されました。
「注文とエクスポート」で1つの外部ライブラリをチェックしていなかったので、エラーが発生していました。
次のフォルダのコピー/貼り付けを新しいプロジェクトに作成しました同じパッケージ名を維持、それを解決しました:
そして最後に、ファイルの依存関係を追加しましたbuild.gradle
。
GL
バージョン管理のおかげで、.classpathxmlファイルに次の行がないことに気付きました。
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
これらにより、メインアクティビティでClass-not-foundが発生しました。
Robolectricテストを実行するときも同じです。実際、テストクラスパスには、Android.com.Activityを含むjarが含まれていますが、これは確立されていません。私の場合の解決策は、Mavenプロジェクトで使用されている10番目のJDKバージョンからJava_HOMEをダウングレードすることです。
私はちょうどこの問題に遭遇しました。 MainActivityを新しいパッケージに移動したことが原因であることがわかりました。
私がしたことはそれをから移動することでした
com.example.MainActivity
に
Activity
だから私のマニフェストでは次のようになりました:
Android:name="Activity.MainActivity"`
元のパッケージに戻すことで解決しました。パッケージの名前を正しく変更することでも解決できます。
例:com.example.Activity.MainActivity
これが誰かを助けることを願っています。