【问题标题】:java.lang.NoClassDefFoundError - Why? How to troubleshoot?java.lang.NoClassDefFoundError - 为什么?如何排除故障?
【发布时间】:2012-02-16 02:02:23
【问题描述】:

我的应用程序中的一个菜单项只是尝试调用另一个活动(属于同一工作区中的不同项目):

myActivity.startActivity(new Intent(myActivity, com.bill.the.App.class));

但这会立即导致运行时异常:

E/AndroidRuntime(3847): java.lang.NoClassDefFoundError: com.bill.the.App

为什么?

我错过了什么?

(项目编译构建正常,只是在运行时出现此错误)

【问题讨论】:

  • 在您启动活动时,您的目标/模拟器上是否已经安装了第二个项目(您试图通过菜单调用)?也许,项目(因此其中的类)未安装,因此无法找到该类。
  • @alex.veprik 是的,我已经安装了第二个项目(与此工作区中的包名称相同,但与调用应用程序的包名称不同)。但是...安装的第二个项目是建立在不同的工作空间上的。这有关系吗?

标签: android android-intent noclassdeffounderror android-activity


【解决方案1】:

可能是包含 com.bill.the.App 的项目或库包含在编译搜索路径中,但未包含在生成的 apk 文件中(即部署到设备)。如果您使用错误的方式包含包含 com.bill.the.App 的项目或库,则可能会发生这种情况。确保通过使用 Android 库项目(项目属性 -> Android)或在项目属性 -> Java 构建路径 -> 库中包含 jar 文件来包含它。

【讨论】:

  • 我确实在调用应用程序中将它作为库项目引用,但我没有在它自己的属性中将其标记为IsLibrary,因为它可以是一个独立的应用程序。我现在正在检查另一个方向:它是从库项目中调用的,所以库的清单可能应该包括 <activity android:name=".App"/> 而不仅仅是应用程序的清单。暂时 +1。
  • 不。即使将<activity android:name=".App"/> 添加到库项目也无济于事。这越来越奇怪了。
  • 好吧,我玩了一下project properties -> Android 设置(Is Library 复选框 Add Library 按钮),得到了一些Conversion to Dalvik format failed with error 1,但感谢this answer,我很快就解决了。异常已解决。
【解决方案2】:

只需打开您的AndroidManiFest.xml,并在</application> 标记之前写入以下行。

<activity android:name=".App"/>

【讨论】:

  • 这没有帮助,但我认为这是解决问题的必要技巧(请参阅我对@Rich 的评论)。 +1。
【解决方案3】:

该活动可能未在清单中注册

【讨论】:

  • invoking 应用程序的清单中?如果是这样,那么你是对的。它没有在清单中注册。让我看看注册它是否能解决问题...
  • 嗯...我只是尝试过,但它并没有解决问题。我实际上在调用应用程序的清单中的&lt;/application&gt; 标记之前添加了&lt;activity android:name="com.bill.the.App"&gt;&lt;/activity&gt;,但我仍然收到此错误。 +1 尽管如此。
猜你喜欢
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2010-11-30
  • 2021-09-11
  • 2012-02-18
  • 2011-03-07
相关资源
最近更新 更多