NoClassDefFoundError on external library project for Android

2022-09-02 21:03:21

我使用eclipse进行Google Android开发。

我创建了一个库项目(在Android设置中),其中包括一个外部jar文件(引用的库)。此库项目在另一个项目(将使用该库项目的实际项目)中引用。这是通过在Android设置下添加项目来完成的。[x] Is Library

源代码编译,但是如果我想在设备上执行它,我会获得NoClassDefFoundError,该类位于库项目中包含的jar文件中

编辑:添加到导出条目的 jar-file ist(在库项目的 -Tab 上)[x] my.jarOrder and Export

有没有一种干净的方法来让它工作?


答案 1

在官方API中已经清楚地说明了这一点

库项目可以包含 JAR 库

您可以开发一个本身包含 JAR 库的库项目,但是您需要手动编辑依赖应用程序项目的构建路径并向 JAR 文件添加路径

jar lib 必须手动添加到依赖应用程序项目的生成路径中,而不仅仅是库项目生成路径本身。

从 SDK r17 更新:

现在,这由 ADT 自动处理,请在此处查看 ADT 17.0.0 版本的新功能

添加了自动设置 JAR 依赖项的功能。/libs 文件夹中的任何.jar文件都将添加到构建配置中(类似于 Ant 构建系统的工作方式)。此外,库项目所需的.jar文件也会自动添加到依赖于这些库项目的项目中。(更多信息)


答案 2

对于那些遵循了这些步骤(甚至在“排序和导出”中检查项目)并且仍然在API 17中拥有java.lang.ClassNotFoundException的人,最后一步是检查您的编译器是否未在Java 1.7中运行。如果为 1.7,则应为所有项目将其更改为 1.6。之后,它将要求重建所有项目,并在我的手机上成功运行:)

要更改 eclipse 中的 java 编译版本,请参阅:Java 编译器>项目属性>编译器合规性级别:1.6


推荐