8

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

4

8 回答 8

10

尝试这个:

清除应用cache

清除应用data

Uninstall应用程序

Run/Debug再次

希望它有效!

于 2016-04-27T05:57:10.833 回答
6

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

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

于 2016-04-28T10:18:03.927 回答
2

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

Gradle/Android Studio 通用:

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

引用类

它是否通过清单正确列出?gradle 配置呢?

通过 IDE 加载类(虽然这似乎主要与 eclipse 相关)

升级到 ADT 22 后,库不再添加到 APK

Android Activity ClassNotFoundException - 尝试了一切

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

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

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

于 2016-04-27T06:12:35.877 回答
2

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

gradlew --stop
gradlew cleanBuildCache
gradlew clean
于 2017-10-19T19:34:16.300 回答
1

您必须提供:

compileSdkVersion '22' buildToolsVersion "22.0.1" 

身为你的targetSdkVersion 22

于 2016-04-27T06:02:09.883 回答
1

在这里你去:清理项目,卸载现有的应用程序并再次运行。

于 2016-04-27T07:14:44.107 回答
0

对我来说,以上没有任何效果。直到我禁用“即时运行”热交换代码。

Android studio 版本:2.3.3最新(答题日期

Android 测试设备:5.1.1、6.0.1

禁用即时运行。在 Android Studio 中,转到 Preferences ->在搜索栏中输入“ Instant Run ” -> 取消选中“ Enable Instant Run to hot swap code ...

于 2017-10-10T06:13:51.537 回答
0

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

于 2021-10-26T15:56:06.623 回答