8

请有人解释一下这个错误的含义以及如何避免它。

一段时间后,由于此错误,我的应用程序强制关闭:

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

此问题无法通过重新安装应用程序来解决。

例如,如果我将其重命名AsyncTaskExtAsyncTaskExt2,那么它会再次工作很长时间。但几周/几个月后,它又开始出现这个错误。

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

请帮帮我,塔马斯

4

5 回答 5

12

仅当启用即时运行时才会发生在我身上。

于 2017-07-24T17:49:41.247 回答
11

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

上次我现场看到它时,我不得不处理一个实际上没有包含或列出其依赖项的 JAR 文件,因此将正确的依赖库添加到 gradle 文件中解决了它。最大的问题是确定哪些类丢失了——dalvik 日志/反编译/文档可能会告诉你。

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

于 2016-03-02T15:28:20.163 回答
3

在构建另一个启用了 New Relic 分析的项目后,我开始遇到这个问题。Gradle 守护程序随后缓存了 New Relic 代理,它无法启动其他应用程序。

有帮助的是

./gradlew --stop
于 2017-05-16T13:29:21.840 回答
2

您必须在 AndroidManifest.xml 中添加使用库

于 2014-10-09T07:01:53.107 回答
-1

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

于 2012-10-02T19:06:33.967 回答