ClassNotFoundException:在路径上找不到类:DexPathList

Opi*_*chs 30 android proguard admob classnotfoundexception

我有一个问题,因为我在Playstore上更新了我的应用程序.自此更新以来,抛出异常,但我没有更改与此异常相关的任何内容.

堆栈跟踪:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.opiatefuchs.onthejobtimerlight/de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity}: java.lang.ClassNotFoundException: Didn't find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-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:1066)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
... 10 more
Suppressed: java.lang.ClassNotFoundException: de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity
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
Run Code Online (Sandbox Code Playgroud)

问题是,我的App版本在运行之前没有问题,我没有改变任何与此活动相关的内容.我刚刚添加了一个与此活动无关的新信息对话框.这个应用程序是一个免费的Lite版本,我在专业版上做了完全相同的更改,没有任何东西被抛出.这按预期工作.pro和lite之间的唯一区别是,我在精简版中集成了Admob(在新方式上),在专业版中集成了Google Play许可.但是我从一开始就已经整合了,并没有对此进行改动.我也没有对清单进行任何更改,我在这里阅读了很多帖子,但没有任何帮助.

它似乎只发生在自5.0以来的Android版本上.有谁知道这个问题可能导致什么或有任何人相同的经历?proguard是否有可能通过混淆来破坏任何东西(在这里,没有变化)?

我没有发布任何代码,因为它对这个问题并不重要,就像我说我没有做过与此异常相关的更改.

该问题被标记为重复但不是.链接的注释不能解决我的问题,所有库都以正确的方式进行检查和集成.另外,我不使用NDK.

Opi*_*chs 26

更新

经过很长一段时间,事实证明它必须与proguard有关.我无法确切地说出错误到底是什么原因,但我尝试了一点,这就是我注意到的(在我的情况下使用Eclipse IDE):

  • 我必须关闭我要签名的项目中的每个选项卡
  • 我必须清理项目,清理后,除了导出apk之外什么都不做
  • 在清单中进行小的更改,保存并撤消更改(并保存)
  • 如果清单中有任何以"YourClass"或".YourClass"命名的类,请将其更改为"com.yourpackage.yourClass"

这是我所做的四点,然后才奏效.这看起来很可疑,但我认为混淆是个问题.因为没有做这些点,我可以简单地编译我的apk并从eclipse安装它.对我来说,这种行为没有明显的原因.如果我只是从eclipse安装它,包名称也可以不做任何更改.我希望这些观点可以帮助某些人.


Cod*_*ife 16

如果你显示包名是好的,如果你关闭了项目,并且在文件浏览器中重命名了你的项目但是在导入之后再次遇到这个问题,这里唯一的方法是

删除那个文件夹.gradle.

可以使用文件资源管理器在项目文件夹中找到此文件.它具有包含该旧项目名称的工件文件.在Android Studio中重新打开项目后,将自动重新创建该文件夹.


小智 8

我刚把我的gradle从com.android.tools.build:gradle:2.2.2改为com.android.tools.build:gradle:2.2.0,问题很好!


HBB*_*B20 6

对我来说,它发生在包名称(目录名称)更改时。

我意识到“build”文件夹神奇地维护了项目构建的中间文件。我删除了“app”文件夹下的“build”文件夹。现在 gradle 不得不用新的包名重新制作所有文件。现在它工作正常。


归档时间:

查看次数:

50355 次

最近记录:

8 年,3 月 前