所以我最近一直在开发一款适用于大多数设备的应用程序。但是,有时应用程序在启动时崩溃并出现以下错误:
java.lang.RuntimeException: Unable to instantiate activity
ComponentInfo{com.mypackage.app/com.mypackage.app.activities.MainPager}:
java.lang.ClassNotFoundException: com.mypackage.app.activities.MainPager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1995)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2096)
at android.app.ActivityThread.access$600(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1207)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:4787)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:115)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException:
com.mypackage.app.activities.MainPager
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1986)
... 12 more
我知道这是因为找不到名为MainPager的类。但这怎么可能呢?我的意思是,班级应该在那里..我自己把它放在那里:)。为什么它找不到呢?
编辑:我认为原因可能是我的清单中已定义android:package="com.mypackage.app"
,但我的启动活动位于包com.mypackage.app.activities
中。目前正在测试这一理论但仍然很奇怪它只发生在一些设备上。
此解决方案不起作用,因为我无法在Google Play中更新APK(必须在清单中使用相同的包名称)。
答案 0 :(得分:0)
自从ADT更新到第22版(2013年5月)以来,您必须在Project - >中选中“Android Private Libraries”复选框。属性 - > Java构建路径 - > Eclipse中的Order和Export为您的旧项目摆脱了这个异常...
答案 1 :(得分:0)
在清单中添加活动名称,如此
android:name=".activities.MainPager"
因为您提供了包名
android:package="com.mypackage.app"
答案 2 :(得分:0)
现在我在Nexus 5上使用ART运行时,我正在为某些应用程序获取ClassNotFound。
如果您的用户就是这种情况,您可以放心地忽略这些。