Android Studio更新后的Java.lang.ClassNotFoundException

时间:2016-04-27 05:50:17

标签: android android-studio android-studio-2.1

我从稳定频道更新到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)在“设置”中选中并取消选中离线模式 显然这是一个错误,但有解决方案吗?如何撤消最近的更新?任何帮助深表感谢。

7 个答案:

答案 0 :(得分:8)

试试这个:

清除应用cache

清除应用data

Uninstall app

再次

Run/Debug

希望它有效!

答案 1 :(得分:5)

我们在更新到Android Studio 2.1版后遇到类似错误。很久以前添加的类现在在应用程序启动时找不到。只有Android 5.1和5.1.1才会发生 。非常奇怪的崩溃!

解决方法是启用“即时运行”解决Lollipop上的问题。

答案 2 :(得分:2)

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

Gradle / Android Studio General:

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

引用类

是否通过清单正确列出了? 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

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

我通过纯粹的绝望发现,通过将我的班级名称Manifest更改为MyCoolManifest或类似的东西,我不再有问题。由于您的班级名称是Login,因此重命名班级可能会解决您的问题。

答案 3 :(得分:2)

尝试清理gradle cache&通过在终端中运行每一行来构建:

gradlew --stop
gradlew cleanBuildCache
gradlew clean

答案 4 :(得分:1)

你必须提供:

compileSdkVersion '22' buildToolsVersion "22.0.1" 

作为targetSdkVersion 22

答案 5 :(得分:1)

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

答案 6 :(得分:0)

对我来说,没有任何上述工作。直到我将“即时运行”停用为热插拔代码。

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

Android测试设备: 5.1.1,6.0.1

禁用即时运行。在Android工作室中,获得首选项 - >在搜索栏中写上“即时运行” - >取消选中“启用即时热运行以热插拔代码...