web-dev-qa-db-ja.com

Android Studioアップデート後のJava.lang.ClassNotFoundException

安定したチャネルからAndroid Studio 2.1に更新しました。これを実行するとすぐに、マニフェストで長時間宣言されているログインクラスにClassNotFoundExceptionが取得されます。更新前に、アプリは正常にコンパイルされていました。

com.myapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp, PID: 29605
    Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.myapp/com.myapp.Login}: Java.lang.ClassNotFoundException: Didn't find class "com.myapp.Login" on path: DexPathList[[Zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:3023)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3294)
    at Android.app.ActivityThread.access$1000(ActivityThread.Java:210)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1704)
    at Android.os.Handler.dispatchMessage(Handler.Java:102)
    at Android.os.Looper.loop(Looper.Java:145)
    at Android.app.ActivityThread.main(ActivityThread.Java:6938)
    at Java.lang.reflect.Method.invoke(Native Method)
    at Java.lang.reflect.Method.invoke(Method.Java:372)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1404)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:1199)
    Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.myapp.Login" on path: DexPathList[[Zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
    at Android.app.Instrumentation.newActivity(Instrumentation.Java:1094)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:3013)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3294) 
    at Android.app.ActivityThread.access$1000(ActivityThread.Java:210) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1704) 
    at Android.os.Handler.dispatchMessage(Handler.Java:102) 
    at Android.os.Looper.loop(Looper.Java:145) 
    at Android.app.ActivityThread.main(ActivityThread.Java:6938) 
    at Java.lang.reflect.Method.invoke(Native Method) 
    at Java.lang.reflect.Method.invoke(Method.Java:372) 
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1404) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:1199) 
    Suppressed: Java.lang.ClassNotFoundException: com.myapp.Login
    at Java.lang.Class.classForName(Native Method)
    at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
    at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
    ... 13 more
    Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

これは私のgradle.buildです

apply plugin: 'com.Android.application'
apply plugin: 'com.google.gms.google-services'
Android {
    compileSdkVersion 'Google Inc.:Google APIs:23'
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 14
        targetSdkVersion 22
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
//    compile files('libs/smack-core-4.0.7.jar')
    compile 'com.Android.support:appcompat-v7:23.0.1'
    compile 'com.google.Android.gms:play-services:7.8.0'
    compile 'com.google.maps.Android:android-maps-utils:0.4+'
}

これまでに私は試しました1)プロジェクトをクリーンして再構築します2)ビルドフォルダーを削除してプロジェクト/再起動を再構築しますAndroid Studio 3)カナリアチャネルと開発チャネルに切り替えて更新します4)チェックと設定でオフラインモードのチェックを外します明らかにこれはバグですが、これに対する解決策はありますか?最近の更新を元に戻すにはどうすればよいですか?どんな助けでも大歓迎です。

8
The_Martian

これを試して:

アプリをクリアcache

アプリをクリアdata

Uninstallアプリ

Run/Debug再び

うまくいきますように!

9

Android St​​udioのバージョン2.1にアップデートした後、同様のエラーが発生します。ずっと前に追加されたクラスがアプリケーションの起動時に見つかりません。それはAndroid 5.1および5.1.1でのみ発生です。本当に奇妙なクラッシュ!

これに対する解決策は、 "Instant Run"を有効にすることで、Lollipopの問題を解決しました。

6
Ferran Pons

私はこのエラーを経験し、SOスレッド、およびさまざまなリソースを調べ、Android dev ircにチェックインしました。回答は以下のようですトレンド:

Gradle/Android Studio General:

クリーンビルド、リセットAndroidスタジオキャッシュ、アンインストール/再インストールAndroidスタジオ、Androidスタジオのままにして、それに戻る2時間、コンピューターを再起動します。

クラスを参照する

マニフェストで正しくリストされていますか? Gradle構成についてはどうですか?

IDEを介してクラスをロードする(これは主にEclipse関連と思われる)

ADT 22にアップグレードした後、ライブラリがAPKに追加されなくなります

Android Activity ClassNotFoundException-すべてを試しました

https://www.youtube.com/watch?v=3vqcGhEPHdo

私の解決策:名前の競合?

純粋な絶望から、クラス名ManifestMyCoolManifestに変更するなどして、問題がなくなったことがわかりました。クラス名はLoginであるため、クラスの名前を変更すると問題が解決する可能性があります。

2
caseyh

ターミナルで各行を実行して、gradleキャッシュをクリーンアップしてビルドしてみてください。

gradlew --stop
gradlew cleanBuildCache
gradlew clean
2
DoronK

あなたが提供する必要があります:

compileSdkVersion '22' buildToolsVersion "22.0.1" 

あなたのtargetSdkVersion 22

1
Saurabh Vardani

ここに行きます:プロジェクトをクリーンアップし、既存のアプリをアンインストールして再度実行します。

1
impathuri

私にとって、上記のどれもうまくいきませんでした。 Hot Swapコードで "Instant Run"を無効にするまで。

Androidスタジオバージョン:2.3.最新(回答日

Androidテストデバイス:5.1.1、6.0.1

即時実行を無効にします。 Android studio、Got to Preferences-> write "Instant Run" in the search bar-> Uncheck "Enable Instant Run to hot swap code。 .. "

0
MBH