我的设置如下:
我有一个android项目A和一个java项目B.项目A使用项目B中的一些文件。
我的开发环境是eclipse,我在构建路径中包含了Project B, 并将其标记为“订单和出口”。
项目构建良好,但在运行时我得到了
java.lang.NoClassDefFound错误,当我尝试从项目B引用一个类时。
我该如何解决这个问题?
我正在使用eclipse Juno和ADT 20.0.3。
感谢。
答案 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仅在首次访问时才在运行时加载类。