Android Activity ClassNotFoundException - tried everything Android活动ClassNotFoundException - 试过所有方法
Android Activity ClassNotFoundException - tried everything Android活动ClassNotFoundException - 试过所有方法
我刚刚将一个应用程序重构为一个框架库和一个应用程序,但现在当我尝试在模拟器中启动应用程序时,出现以下错误堆栈跟踪:
06-02 18:22:35.529: E/AndroidRuntime(586): FATAL EXCEPTION: main 06-02 18:22:35.529: E/AndroidRuntime(586): java.lang.RuntimeException: 无法实例化活动 ComponentInfo{com.matthewrathbone.eastersays/com.matthewrathbone.eastersays.EasterSimonSaysActivity}: java.lang.ClassNotFoundException: com.matthewrathbone.eastersays.EasterSimonSaysActivity在加载器dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk]中未找到 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread.access$2300(ActivityThread.java:125) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.os.Handler.dispatchMessage(Handler.java:99) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.os.Looper.loop(Looper.java:123) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread.main(ActivityThread.java:4627) 06-02 18:22:35.529: E/AndroidRuntime(586): 在java.lang.reflect.Method.invokeNative(Native Method) 06-02 18:22:35.529: E/AndroidRuntime(586): 在java.lang.reflect.Method.invoke(Method.java:521) 06-02 18:22:35.529: E/AndroidRuntime(586): 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 06-02 18:22:35.529: E/AndroidRuntime(586): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 06-02 18:22:35.529: E/AndroidRuntime(586): 在dalvik.system.NativeStart.main(Native Method) 06-02 18:22:35.529: E/AndroidRuntime(586): 造成的原因是:在加载器dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk]中未找到类com.matthewrathbone.eastersays.EasterSimonSaysActivity 06-02 18:22:35.529: E/AndroidRuntime(586): 在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 06-02 18:22:35.529: E/AndroidRuntime(586): 在java.lang.ClassLoader.loadClass(ClassLoader.java:573) 06-02 18:22:35.529: E/AndroidRuntime(586): 在java.lang.ClassLoader.loadClass(ClassLoader.java:532) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.Instrumentation.newActivity(Instrumentation.java:1021) 06-02 18:22:35.529: E/AndroidRuntime(586): 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 06-02 18:22:35.529: E/AndroidRuntime(586): ... 还有11个
通常这意味着清单文件在某种程度上是错误的,但我已经仔细检查了我能想到的一切。
这是我的活动类:
package com.matthewrathbone.eastersays; import android.os.Bundle; import com.rathboma.simonsays.Assets.Season; import com.rathboma.simonsays.SeasonPicker; import com.rathboma.simonsays.SimonSaysActivity; public class EasterSimonSaysActivity extends SimonSaysActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public SeasonPicker getSeasonPicker() { return new SeasonPicker(){ @Override public Season getSeason() { // TODO Auto-generated method stub return Season.EASTER; } }; } }
如您所见,它在清单中正确列出:
我不知道如何解决这个问题,希望得到任何帮助。我在SO上扫描了许多类似的问题,但没有看到这种特殊的行为。
更多信息:
- 我已经检查了生成的APK中的类.dex文件,该类在其中有一个条目
- 我尝试在eclipse中清理/构建项目
- 我尝试使用一个完全新的设备映像,上面没有安装APK的副本
- 将库项目更改为普通的Java,然后再次更改为Android项目,没有任何区别
- 在清单中添加抽象的SimonSaysActivity没有任何区别
- 我尝试将每个依赖项都变成一个Android库项目,并同步它们所需的Android版本,但没有帮助
找到了解决方法(见下文)。对于每个发布答案/评论的人:你们都很棒,感谢你们帮助我解决问题!
看起来这是由SDK工具的升级引起的。感谢下面的@Nick在评论中提供的链接: