android force close:Activity类的ClassNotFoundException

当我开始我的(即将)安卓游戏(从eclipse)它打开,但立即强制closures。

Logcat说:

07-09 17:12:35.709: ERROR/AndroidRuntime(3866): Uncaught handler: thread main exiting due to uncaught exception 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.anselm.eickhoff.rhythm/org.anselm.eickhoff.rhythm.RhythmGameActivity}: java.lang.ClassNotFoundException: org.anselm.eickhoff.rhythm.RhythmGameActivity in loader dalvik.system.PathClassLoader@4001e740 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2497) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread.access$2200(ActivityThread.java:126) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.os.Handler.dispatchMessage(Handler.java:99) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.os.Looper.loop(Looper.java:123) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread.main(ActivityThread.java:4595) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at java.lang.reflect.Method.invokeNative(Native Method) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at java.lang.reflect.Method.invoke(Method.java:521) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at dalvik.system.NativeStart.main(Native Method) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): Caused by: java.lang.ClassNotFoundException: org.anselm.eickhoff.rhythm.RhythmGameActivity in loader dalvik.system.PathClassLoader@4001e740 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2489) 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): ... 11 more 

这里有趣的是(我认为):

 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): Caused by: java.lang.ClassNotFoundException: org.anselm.eickhoff.rhythm.RhythmGameActivity in loader dalvik.system.PathClassLoader@4001e740 

这让我感到惊讶,因为我有这个类(在正确的包装中)

编辑:澄清,加上我省略的第一行(连同import)

 package org.anselm.eickhoff.rhythm; ... public class RhythmGameActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public void onPause() { } } 

就是这样!

我也注册在清单中:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.anselm.eickhoff.rhythm" android:versionCode="1" android:versionName="pre-alpha"> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:hasCode="false"> <activity android:name=".RhythmGameActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

编辑:这一切都已经开始,因为我把活动从RhythmGame重命名为RhythmGameActivity,但我很确定我取代了所有的引用,所以也许它仍然是错误的地方? (我尝试刷新和清理项目)

你的帮助真的很感激 – 我坚持!

我在Eclipse中使用了Perforce,并发现Perforce将源代码pipe理下的所有文件设为只读的默认行为会导致构build问题,这些问题在Eclipse的构build窗口中没有明确指定。 另外,在添加一个库项目时,对于我来说似乎有一个怪癖,即使.classpath和.project文件是可写的,库也可能不能正确地将自己与项目相关联。 我通常按​​照这些步骤来解决这种性质的错误(假定项目的清单是正确的):

1)closuresEclipse。 Eclipse可能会caching一些关于文件R / W状态的信息。

2)(广泛的笔画)通过从源代码控制或者通过操作系统检查项目中的所有文件是可写的。 .classpath和.project最低限度应该是可写的。

2.5)如果您将文件放在源代码pipe理下,在构build过程中生成,并且是Android构build过程的正常组成部分,则应将其从源代码pipe理中删除并进行写入。 包括但不限于bin和gen目录中的.class和文件。

3)在Eclipse中打开项目。 如果没有错误,则问题可能得到解决。

4)检查项目浏览器,并专门查找可能丢失的库项目依赖关系。 根据我的经验,在项目的浏览器层次结构中查看所有lib项目的目录和它们的库状态图标是很重要的。 如果缺lesslib项目文件夹和图标,请转至Properties-> Android,然后select并添加缺less的lib。 添加一个lib后,select“Apply”,观察项目浏览器,确保lib图标出现在项目目录中。 这一步的解释可能看起来过于详细,但我已经被咬了几次,然后强迫自己在这里变得更加谨慎。 如果一个lib不会添加,请尝试添加其他的虚拟lib项目,并将其与您想要的库组合删除它们。 没有开玩笑 – 这对我来说有时是必要的。

5)清理所有的项目。

6)阅读错误列表并解决其他错误。

7)修复你已经推迟修复的所有警告。

8)(不重要但重要)恢复所有未更改的文件,并观察更改列表中剩下的内容 – 这些是将来需要您注意的文件,以防止构build问题。

刚刚有同样的问题。 更新ADT到最新版本后,我的

  LIB 

文件夹不再被识别。 必须重命名为

现在:他们真的需要每5分钟发布一次新的SDK吗? 他们难道不能长时间创造一个稳定的环境吗?

当我的工作应用程序突然开始抛出ClassNotFoundException时,我曾经遇到过这个问题。 问题在于这些类没有被编译并转换为“dex”文件,这是显而易见的,因为APK只是缩小了。

所以,在eclipse中,为了解决这个问题,只需将javabuilder添加到你的.project文件中即可。

 <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> 

希望能帮助到你。

尝试修复.classpath。

有同样的问题造成的.classpath文件损坏。 修复它之后,ClassNotFoundException消失了。

背景是我们正在使用SVN,更新导致.classpath中的冲突。 然而,Eclipse没有显示任何错误信息或提示。 当我试图提交当前的变化时,我才发现。

这里的解决scheme是做一个新的SVN检查项目,所以一个工作版本的.classpath被恢复。

不是一个真正的解决scheme,但是这固定了它

从头创build一个新项目并迁移代码

请closures这个,如果这样的事情可能在这里。

感谢您的所有想法和想法!

刚刚有这个相同的问题。 疯了。 完全重新启动模拟器/ adb /和eclipse,并修复它。 奇怪的东西…

你在Eclipse中重命名了吗? 仔细检查它是否正确地用子包重命名。 在我的情况下,它删除了点:

错:ui.MyActivity

修复:.ui.MyActivity

我有同样的问题,在我的情况下,我忘了把一个库在Android Manifest。 我有一个MapView活动,我忘了把:

 <uses-library android:name="com.google.android.maps"/>. 

所以,你应该确保你的清单中包含了所有的库。

在将SDK更新到Android 4之后,我在FragmentActivity中得到了这个错误。原因是,您不再需要包含android-support-v4.jar。 只需通过在项目上单击鼠标右键来添加支持工具,而不是通过Android工具 – >添加支持库。

我知道这不是你的问题,但我有完全相同的问题。 突然我的应用程序停止工作。 我没有做任何改变来显示,但有一次意外,第一行丢失了:

<?xml version="1.0" encoding="utf-8"?>

这导致启动器活动的ClassNotFoundException。 我在那里挣扎了好几个小时,每次我检查清单中可能的错误时,我都忽略了这一点。

奇怪的事情发生后,我又删除了这一行。 惊喜,惊喜应用程序仍在工作。 (我没有忘记重build应用程序)

希望这可以帮助别人节省几个小时。

也许你的运行configuration是指旧名称。 点击绿色运行button旁边的小三angular,然后select运行configuration。 确保这个项目的一个引用了正确的活动名称。 或者只是删除它,Eclipse会自动让你一个新的。