Android:NoClassDefFound错误

时间:2012-09-22 13:51:05

标签: android

我的设置如下:

我有一个android项目A和一个java项目B.项目A使用项目B中的一些文件。

我的开发环境是eclipse,我在构建路径中包含了Project B, 并将其标记为“订单和出口”。

项目构建良好,但在运行时我得到了

java.lang.NoClassDefFound错误,当我尝试从项目B引用一个类时。

我该如何解决这个问题?

我正在使用eclipse Juno和ADT 20.0.3。

感谢。

4 个答案:

答案 0 :(得分:0)

当您谈到更新Eclipse和ADT时,您是否也将环境更改为Java 7? 如果是这种情况,答案是: 切换回Java 1.6.x,因为Android不支持Java 7。

您需要更改:

下的“编译器合规级别

窗口 - 首选项 - Java - 编译器 - 编译器合规性级别

希望有效,至少它对我有用: NoClassDefFoundError when referencing from an Android-Project to a standard Java-Project

答案 1 :(得分:0)

您还可以尝试在jar中导出所需的java类,并将该jar包含在Android项目中。

答案 2 :(得分:0)

当我尝试引用具有相同项目本身的另一个类时,我遇到了同样的问题。在我的情况下,当我重新检查android依赖项时,问题就解决了。我为一个必需的文件添加了两个jar文件。在我的项目中需要android-support-v4.jar文件。我错误地添加了两次库。当我删除其中一个时,错误已解决。

答案 3 :(得分:0)

对我而言,使用AIDE开发环境时会发生这种情况。在过去的一年里,它发生了几次。

当使用Java菱形运算符指定函数的泛型类型时,程序将编译,但Dalvic引擎会因NoClassDefFound异常而崩溃。

要解决此问题,我必须明确定义泛型类型。

顺便说一句,这次崩溃可能发生在与问题实际存在的完全不同的地方。例如,我们有类A和B.坏代码在A.myMethod()。当B类试图访问A类的任何部分时,即使是不相关的东西,例如A.myOther()方法,也会发生崩溃。

这是因为Java / Dalvic仅在首次访问时才在运行时加载类。