NoClassDefFoundError - 拒绝先前失败的类的重新初始化

bar*_*tat 6 android noclassdeffounderror

请有人解释一下这个错误意味着什么,以及如何避免它.

过了一会儿我的应用程序强制关闭因为这个错误:

09-28 12:53:45.746 I/dalvikvm(29489): Rejecting re-init on previously-failed class Lcom/bartat/android/ui/task/AsyncTaskExt; v=0x0
09-28 12:53:45.748 D/AndroidRuntime(29489): Shutting down VM
09-28 12:53:45.755 I/am_crash( 1146): [29489,com.bartat.android.secret,572996,java.lang.NoClassDefFoundError,com.bartat.android.ui.task.AsyncTaskExt,CommandsActivity.java,726]
09-28 12:53:45.755 I/am_finish_activity( 1146): [1079225264,123,com.bartat.android.secret/.CommandsActivity,crashed]
09-28 12:53:45.750 W/dalvikvm(29489): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-28 12:53:45.752 E/AndroidRuntime(29489): FATAL EXCEPTION: main
09-28 12:53:45.752 E/AndroidRuntime(29489): java.lang.NoClassDefFoundError: com.bartat.android.ui.task.AsyncTaskExt
Run Code Online (Sandbox Code Playgroud)

重新安装应用程序无法解决此问题.

如果我重新命名AsyncTaskExt,以AsyncTaskExt2例如然后再工作很长时间.但经过几周/几个月后,它又开始出现这个错误.

这是什么意思?为什么抛出它以及如何在不重命名类的情况下避免它?

请帮助我,Tamás

Tob*_*ias 12

仅在启用即时运行时才会发生.


Com*_*ter 9

当由于各种原因无法加载类时会发生这种情况.不幸的是,新的ART运行时没有记录关于其原因的足够信息.如果你可以使用Dalvik获得一个较旧的Android设备,你会看到不同的日志记录,通常会更准确地揭示攻击.

上次我看到它时,我不得不处理一个实际上没有包含或列出其依赖项的JAR文件,因此将正确的依赖库添加到gradle文件解决了它.最大的问题是要确定哪些类丢失了 - dalvik logs/decompilation/documentation可能会告诉你.

还有许多其他原因导致无法在整个Java语言中加载类,因此这一特定原因可能无法普遍适用.


Dur*_*amy 0

您确定这是运行应用程序后遇到的第一个异常吗?之前可能有一些未捕获的异常。