我在尝试加载程序时收到“无法实例化活动”错误。让我感到困惑的一件事就是在我的旧电脑上使用完全相同的代码。我刚刚用新的eclipse / android SDK /等构建了一个新的。我有两台机器运行相同的代码,一个工作正常,另一个给出了这个错误。
有什么想法吗?
编辑: 我在堆栈中注意到的一件事是
引起:java.lang.ClassNotFoundException:com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader [/data/app/com.voldaran.puzzle.graBLOX-2.apk]
它列出了graBLOX-2.apk。为什么使用'-2.apk'?
当我在工作机器上手动重现此错误时,它不会显示最后[]'d部分。
Android Manifest
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".PopActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:finishOnTaskLaunch="true"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
堆栈
04-21 17:33:42.284: E/AndroidRuntime(4045): FATAL EXCEPTION: main
04-21 17:33:42.284: E/AndroidRuntime(4045): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.voldaran.puzzle.graBLOX/com.voldaran.puzzle.graBLOX.PopActivity}: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader[/data/app/com.voldaran.puzzle.graBLOX-2.apk]
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.os.Handler.dispatchMessage(Handler.java:99)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.os.Looper.loop(Looper.java:130)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.reflect.Method.invoke(Method.java:507)
04-21 17:33:42.284: E/AndroidRuntime(4045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-21 17:33:42.284: E/AndroidRuntime(4045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-21 17:33:42.284: E/AndroidRuntime(4045): at dalvik.system.NativeStart.main(Native Method)
04-21 17:33:42.284: E/AndroidRuntime(4045): Caused by: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader[/data/app/com.voldaran.puzzle.graBLOX-2.apk]
04-21 17:33:42.284: E/AndroidRuntime(4045): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
答案 0 :(得分:8)
我发生了几乎相同的情况(最初在32位机器上制作的项目,然后在另一台64位机器中导入)。
在Eclipse Juno(64位)下的Android项目中:
答案 1 :(得分:2)
试试这个。在PopActivity
中添加这段代码,并在其默认构造函数中调用此函数。
private static void fixClassLoaderIssue()
{
ClassLoader myClassLoader = MyClass.class.getClassLoader();
Thread.currentThread().setContextClassLoader(myClassLoader);
}
我有一个类似的问题,这解决了它。现在这个解决方案并没有真正解决问题存在的原因,但我真的无法找到答案 参考检查this回答。
答案 2 :(得分:0)
您是否尝试过干净的项目?这通常可以解决我的类加载器问题。
答案 3 :(得分:0)
在我的情况下,AndroidManifest文件中的包名错误。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
*package="com.app"*
android:versionCode="1"
android:versionName="1.0" >