库项目中的JAR文件在应用程序项目中不可见。

4

将SDK工具升级到22版本后,来自库项目的JAR文件中的类(位于其libs目录中)在应用程序项目中(依赖于库项目)不可见。它在Eclpise中不起作用(甚至无法编译),也不能从ant命令行中运行(项目可以编译成功,但是在运行时会抛出NoClassDefFoundError)。我尝试了符号链接和复制libs文件夹,但都没有成功。


你应该在你的Android项目中引用库项目。1. http://developer.android.com/tools/projects/projects-eclipse.html。2. http://developer.android.com/tools/projects/index.html。 - Raghunandan
库项目被添加为引用。它本身的类是可见的。 - koral
我有点困惑。你能再清楚一些吗?1. 你是否有一个库项目(不同于jar),需要在你的项目中引用它。2. 你有一个jar文件,并将其添加到libs文件夹中。假设jar文件只包含.java文件。 - Raghunandan
我有一个库项目,其中包含源代码和JAR文件(在libs文件夹内,例如ACRA、Android支持库)。这个库项目被许多应用程序项目引用。从源代码编译的类是可见的,这是可以的。问题在于来自JAR文件的类不可见。 - koral
然后你需要在你的Android项目中引用你的库项目。不需要将它添加到libs文件夹中,只需引用并进行清理、构建和运行即可。 - Raghunandan
显示剩余4条评论
2个回答

3

最终我找到了解决方案:

  1. 在应用程序项目的主文件夹中创建一个名为 libs 的符号链接,指向库项目中相应的 libs 文件夹或链接特定的 JAR 包(也可以使用复制代替链接)。
  2. 在项目属性->Java Build Path->Order and export 中勾选 Android Dependencies 和 Android Private Libraries 的复选框。

3
我本来不需要做步骤一,但步骤二对我有效。谢谢你发布答案。 - cottonBallPaws

1
ADT 22添加Android私有库参考项目/libs,如果您想引用其他项目,则必须检查Java Build Path-->Order and Export中的Exported,并清理项目。

1
如果项目中没有引用库中的JAR文件,则无需担心。但是,如果您的库项目包含JAR文件(也未直接包含在应用程序项目中),则必须额外链接/复制这些JAR文件。 - koral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接