1

一个在我的应用我的菜单项只是试图调用另一个活动(即属于不同的项目在同一个工作区):java.lang.NoClassDefFoundError - 为什么?如何解决问题?

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

但是,这立即在运行时导致异常:

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

为什么?

我错过了什么?

(项目编制和建设得很好,这只是在运行时会出现此错误)

+0

在启动活动时,您是否已经在目标/模拟器上安装了第二个项目(您正试图通过菜单调用)?也许,该项目(因此它的类)没有安装,因此无法找到该类。 – 2012-02-16 02:05:43

+0

@ alex.veprik是的,我安装了第二个项目(使用与此工作区相同的软件包名称,但与调用应用程序的软件包名称不同)。但是......安装的第二个项目是建立在不同的工作空间上的。这很重要吗? – 2012-02-16 02:11:10

回答

3

这可能是因为含有com.bill.the.App项目或库包含在编译中搜索路径,但在生成APK文件不包括(部署到设备)。如果您以错误的方式包含了包含com.bill.the.App的项目或库,可能会发生这种情况。确保使用Android库项目(项目属性 - > Android)或通过将jar文件包含在项目属性 - > Java Build Path - > Libraries中来包含它。

+0

我确实在调用应用程序中将它作为库项目引用,但我没有在其自己的属性中将其标记为“IsLibrary”,因为它可以是独立应用程序。我现在正在检查另一个方向:它是从一个库项目调用的,因此库的清单可能应该包含该',而不仅仅是应用程序的清单。 +1现在。 – 2012-02-16 02:30:02

+0

没有。即使将''添加到Library项目也没有帮助。这很奇怪。 – 2012-02-16 02:33:49

+1

那么,我玩了一些与'项目属性 - > Android'设置(**是库**复选框*和**添加库**按钮),得到了一些'转换为Dalvik格式失败,错误1'但我很快就解决了这个问题,这要归功于[这个答案](http://stackoverflow.com/a/8106366/1124861)。异常解决。 – 2012-02-16 02:59:05

0

活动可以在清单中不是

+0

在调用**应用程序的清单中?如果是这样,那么你是对的。它没有在清单中注册。让我检查一下,注册是否可以解决问题... – 2012-02-16 02:12:16

+0

嗯......我只是试过了,并没有解决问题。我实际上在调用应用程序的清单中的<标签之前添加了',并且我仍然收到此错误。 +1然而。 – 2012-02-16 02:25:20

3

注册只要打开你的AndroidManiFest.xml,并写在下面的行它在</application>标记之前。

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

这没有帮助,但我认为这是解决问题的必要技巧(请参阅我对@Rich的评论)。 +1。 – 2012-02-16 02:26:29