android force close:Activity类的ClassNotFoundException

当我开始我的(即将成为)Android游戏(来自eclipse)时,它会打开,但会立即强行关闭。

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 

这让我感到惊讶,因为我有这门课(在正确的包中)

编辑:澄清,添加了我省略的第一行(连同导入)

 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() { } } 

这就是全部!

我也在清单中注册了它:

             

编辑:这一切都已经开始,因为我将活动从RhythmGame重命名为RhythmGameActivity,但我很确定我已经替换了所有的引用,所以也许它仍被错误地追逐到某处? (我尝试刷新和清理项目)

非常感谢你的帮助 – 我卡住了!

我在Eclipse中使用Perforce,并发现Perforce将源控件下的所有文件设置为只读的默认行为会导致在Eclipse的构建窗口中未明确指定的构建问题。 此外,在添加库项目时,似乎有一个怪癖,即使.classpath和.project文件是可写的,库也可能无法正确地将其自身与项目关联。 我通常按​​照这些步骤来解决这种性质的错误(假设项目的清单是正确的):

1)关闭Eclipse。 Eclipse可能会缓存有关文件R / W状态的一些信息。

2)(广泛笔划)通过从源代码控制或OS中检查,可以使项目中的所有文件都可写。 .classpath和.project应该是可写的。

2.5)如果您将文件置于源代码管理之下,这些文件是在构建过程中生成的并且是Android构建过程的正常部分,那么它们应该从源代码控制中删除并使其可写。 包括但不限于bin和gen目录中的.class和文件。

3)在Eclipse中打开项目。 如果没有错误,则可以修复该问题。

4)检查项目资源管理器,并专门查看可能缺少的库项目依赖项。 根据我的经验,在项目的资源管理器层次结构中查看所有lib项目的目录及其库状态图标非常重要。 如果缺少lib项目文件夹和图标,请转到Properties-> Android并选择并添加缺少的lib。 添加lib后,选择“Apply”监视项目资源管理器,以确保lib图标出现在项目目录中。 这个步骤解释可能看起来过于详细,但是我已经被咬了好几次,然后强迫自己在这里做一些额外的观察。 如果lib不会添加,请尝试添加其他虚拟lib项目并将其与所需的lib一起删除。 不开玩笑 – 这对我来说有时是必要的。

5)清理所有项目。

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

7)修复你一直在推迟修复的所有警告。

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

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

  LIB 

文件夹不再被识别。 不得不重命名

现在:他们真的必须每5分钟发布一次新的SDK吗? 他们不能在一段时间内创造一个稳定的环境吗?

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

因此,在eclipse中,为了修复它,只需将javabuilder添加到.project文件中。

  org.eclipse.jdt.core.javabuilder    

希望能帮助到你。

尝试修复.classpath。

有同样的问题由损坏的.classpath文件引起。 修复它之后,ClassNotFoundException就消失了。

背景是我们正在使用SVN,更新导致.classpath中的冲突。 但是,Eclipse没有显示任何错误消息或提示。 我只是在尝试提交当前更改时才发现。

这里的解决方案是从项目中执行新的SVN检查,因此恢复了.classpath的工作版本。

不是真正的解决方案,但这解决了它:

从头开始创建一个新项目并迁移代码

如果可能的话,请关闭它。

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

刚刚遇到同样的问题。 疯了。 完全重启模拟器/ adb /和eclipse并修复它。 奇怪的东西……

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

错了:ui.MyActivity

修复:.ui.MyActivity

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

 . 

因此,您应该确保清单中包含所有库。

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

我知道这不是你的问题,但我有完全相同的问题。 突然,我的应用程序停止了工作。 我没有对清单进行任何更改,但是出现了一些意外,错过了第一行:

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

这导致启动器活动的ClassNotFoundException。 几个小时我一直在努力,每次检查清单时都会忽略这个错误。

在我再次删除此行后发生了奇怪的事情。 惊喜,惊喜的应用程序仍然在工作。 (我没有忘记重建应用程序)

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

也许您的运行配置引用旧名称。 单击绿色运行按钮旁边的小三角形,然后选择“运行配置”。 确保此项目的一个引用了正确的活动名称。 或者只是删除它,Eclipse将自动为您创建一个新的。