Android Activity ClassNotFoundException - tried everything Android活动ClassNotFoundException - 试过所有方法

10 浏览
0 Comments

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在评论中提供的链接:

http://iqadd.com/item/noclassdeffounderror-adt-fix

0