【问题标题】:Java.lang.ClassNotFoundException after Android studio updateAndroid Studio 更新后的 Java.lang.ClassNotFoundException
【发布时间】:2016-08-21 05:57:13
【问题描述】:

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

【问题讨论】:

  • compileSdkVersion '23' buildToolsVersion "23.0.1"
  • 升级到Android Studio 2.1后你更新了com.android.tools.build:gradle版本了吗?
  • 您是否尝试禁用即时运行并运行您的项目?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    gradlew --stop
    gradlew cleanBuildCache
    gradlew clean
    

    【讨论】:

      【解决方案3】:

      对我来说,上述方法均无效。直到我禁用“Instant Run”热交换代码。

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

      Android 测试设备:5.1.1、6.0.1

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

      【讨论】:

        【解决方案4】:

        您必须提供:

        compileSdkVersion '22' buildToolsVersion "22.0.1" 
        

        作为你的targetSdkVersion 22

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 在我的情况下,它也与“即时运行”相关,但我必须禁用它才能让它再次运行。第一次成功运行后,我再次启用“Instant Run”,它成功了。
          • @Ferran Pons:我对 Lollipop 设备也有同样的问题,打开 Instant Run 对我有用,但我不想使用 Instant Run,无论如何禁用它没有问题?
          • @LêTháiPhúcQuang AFAIK 唯一的选择是使用具有更高 API 的不同设备。抱歉这么晚才回复。
          • @FerranPons 您好,自从我上次发表评论以来已经有一段时间了,我只是看了一下,问题在没有启用即时运行的情况下就消失了。但我不知道我什么时候关闭了 Instant Run。
          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            Gradle/Android Studio 通用:

            清理构建,重置 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,因此重命名班级可能会解决您的问题。

            【讨论】:

            • 我在 Android Studio 3.0 Beta 6 上遇到了同样的问题。我更改了 Activity 的类名,运行它并且它工作(之后我只是改回了类名)。奇怪的问题,不知道是什么原因造成的。
            • 等了两个小时是什么原因?
            【解决方案8】:

            试试这个:

            清除应用cache

            清除应用data

            Uninstall应用

            Run/Debug再次

            希望它有效!

            【讨论】:

              猜你喜欢
              • 2017-04-16
              • 1970-01-01
              • 1970-01-01
              • 2016-09-30
              • 2023-01-31
              • 2017-08-01
              • 2017-07-24
              • 1970-01-01
              • 2016-01-25
              相关资源
              最近更新 更多