我之前从acra收到了一份崩溃报告,这是堆栈跟踪:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.PACKAGENAME/com.PACKAGENAME.Timetable}: java.lang.ClassNotFoundException: com.PACKAGENAME.Timetable
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1992)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2093)
at android.app.ActivityThread.access$600(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4801)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method._logged_invoke(Method.java:524)
at java.lang.reflect.Method.invoke(Method.java:513)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.PACKAGE.Timetable
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:72)
at java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.lang.ClassLoader._logged_loadClass(ClassLoader.java:480)
at java.lang.ClassLoader.loadClass(ClassLoader.java:472)
at android.app.Instrumentation.newActivity(Instrumentation.java:1056)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
... 12 more
java.lang.ClassNotFoundException: com.PACKAGE.Timetable
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:72)
at java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.lang.ClassLoader._logged_loadClass(ClassLoader.java:480)
at java.lang.ClassLoader.loadClass(ClassLoader.java:472)
at android.app.Instrumentation.newActivity(Instrumentation.java:1056)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2093)
at android.app.ActivityThread.access$600(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1204)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4801)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method._logged_invoke(Method.java:524)
at java.lang.reflect.Method.invoke(Method.java:513)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我认为发生这种情况是因为我在清单中有以下活动,但从未使用过。
<activity
android:name="com.PACKAGENAME.Timetable"
android:label="@string/timetable" >
</activity>
我的项目中没有名为"时间表"的类,并且永远不会调用该活动。我知道我应该删除它(我会的),但我想知道为什么它不会导致应用程序崩溃更多?这已经在应用程序中使用了几个月,今天才导致它第一次崩溃。该应用程序每天都会安静地使用,我无法重现它(在 100+ 用户中,今天只发生了一个用户)。 为什么它现在才发生,我假设它是由该活动引起的是正确的吗?
Java.lang.ClassNotFoundException 表示应用程序运行时中缺少一个类。就我而言,首先检查 AndroidManifest.xml 以确保声明了活动,然后我想检查是否已将所有必要的库添加到构建路径中。
右键单击项目 -> 属性 ->java 构建路径 -> 库,添加库或创建一个包含类的库,并为库启用顺序导出。