如何在Android Studio中解决ClassNotFoundException问题

3

最近我把我的项目从Eclipse迁移到了Android Studio。之前一切都很完美,但最近当我再次开始工作时,我无法启动应用程序。它总是显示相同的错误。我没有在应用程序级别上做出任何更改,仍然得到相同的结果。这是我得到的日志:

FATAL EXCEPTION: main
Process: com.example.android, PID: 6977
java.lang.RuntimeException: Unable to instantiate application com.example.android.MobApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.android.MobApplication" on path: DexPathList[[zip file "/data/app/com.example.android-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:601)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4919)
at android.app.ActivityThread.access$1500(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5721)
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:1029)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.android.MobApplication" on path: DexPathList[[zip file "/data/app/com.example.android-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.newApplication(Instrumentation.java:986)
at android.app.LoadedApk.makeApplication(LoadedApk.java:587)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4919) 
at android.app.ActivityThread.access$1500(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:155) 
at android.app.ActivityThread.main(ActivityThread.java:5721) 
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:1029) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 
Suppressed: java.lang.ClassNotFoundException: com.example.android.MobApplication
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

我最近更换了我的集成开发环境(IDE),现在遇到了解决问题的困难。我也尝试了其他答案,但仍然无法解决这个错误。请帮助我解决这个问题,好让我继续进行我的项目。 非常感谢任何帮助。


你尝试过清理项目吗? - Yoann Hercouet
是的 @YoannHercouet,尝试了几次但没有成功。 - Salman Khan
@SalmanKhan,你能在这里分享你的应用gradle构建文件吗? - Grace Coder
@SalmanKhan 尝试重置 SDK 路径,然后清理项目。重新启动 Studio 然后再试一下。 - Jagjit Singh
@JagjitSingh 尝试了那个解决方案,但仍然面临着相同的问题。 - Salman Khan
3个回答

1

这可能是65k方法限制。请尝试使用链接中的解决方案。


编辑:对于其他遇到此问题的人 - @Salman Khan 在gradle文件中添加了multiDexEnabled true(如链接中所写),问题得以解决。最好仍然阅读整篇文章并按照其中的步骤进行操作。


如果不是这样,我会删除我的回答。 - Uriel Frankel
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - Robert
如果解决问题的路径是这个,我会写一个完整的答案。 - Uriel Frankel
1
我很高兴它有所帮助。这意味着错误是由于多 dex 问题引起的。你所做的解决方案已经在链接中写明。你应该阅读我添加的文章。 - Uriel Frankel
我已经设置了 "multiDexEnabled true",但仍然找不到类。 - Top-Master
显示剩余4条评论

0

使用匿名类替换 lambda 表达式: 在我的 Android Studio 项目中,有两个类出现了 java.lang.ClassNotFoundException 错误 – 这两个类都包含 lambda 表达式。在我将这些 lambda 表达式替换为匿名类之后,编译成功了。


0
在我的情况下,我需要编辑以下内容:
String id = MyClass.class.toString();

翻译成:

String id = MyClass.class.getName();

因为.toString()返回的是类似于"class mypackage.MyClass"(而不是"mypackage.MyClass")这样的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接