Java.lang.ClassNotFoundException Android 工作室更新后

Java.lang.ClassNotFoundException after Android studio update

我从稳定版更新到 Android Studio 2.1。一旦我这样做,我的登录 class 就会收到 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.access00(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.access00(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)删除构建文件夹并重建project/restart Android Studio 3)切换到canary频道和dev频道并更新 4)在设置中勾选和取消勾选离线模式 显然这是一个错误,但是有解决办法吗?我怎样才能撤销最近的更新?任何帮助深表感谢。

试试这个:

清除应用程序cache

清除应用程序data

Uninstall 应用

Run/Debug 再一次

希望有用!

您必须提供:

compileSdkVersion '22' buildToolsVersion "22.0.1" 

作为你的targetSdkVersion 22

我遇到了这个错误,查看了许多 SO 线程和各种资源,还签入了 android dev irc。答案似乎遵循一个趋势:

Gradle/Android 工作室一般:

清理构建,重置 Android Studio 缓存,uninstall/reinstall android studio,离开 Android Studio 并在 2 小时内返回,重新启动计算机。

引用 class

清单中是否正确列出了它? gradle 配置如何?

正在通过 IDE 加载 类(尽管这似乎主要与 eclipse 相关)

Libraries do not get added to APK anymore after upgrade to ADT 22

Android Activity ClassNotFoundException - tried everything

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

我的解决方案:命名冲突?

我绝望地发现,通过将我的 class 名称 Manifest 更改为 MyCoolManifest 或类似名称,我不再遇到问题。由于您的 class 名称是 Login,也许重命名 class 可以解决您的问题。

开始吧:清理项目,并卸载现有的应用程序并再次运行。

更新到 Android Studio 2.1 版后,我们遇到了类似的错误。应用程序启动时现在找不到很久以前添加的 class。 仅在 Android 5.1 和 5.1.1 中发生。真的很奇怪的崩溃!

此问题的解决方案是启用“Instant 运行”解决了 Lollipop 上的问题。

对我来说,以上都没有用。直到我禁用“Instant 运行”到热插拔代码。

Android工作室版本:2.3.3最新(在回答日期

Android 测试设备:5.1.1、6.0.1

禁用即时运行。在 Android studio 中,转到首选项 -> 在搜索栏中输入“Instant 运行” -> 取消选中“Enable Instant 运行 热插拔代码 ..."

尝试通过 运行 终端中的每一行清理 gradle 缓存和构建:

gradlew --stop
gradlew cleanBuildCache
gradlew clean

尝试用匿名替换 lambda class: java.lang.ClassNotFoundException 在我的 android 工作室项目中发生在两个 class 中 – 在它们中都有 lambda 表达式。在我用匿名 class 替换 lambda 之后 – 构建成功。