Android库项目不会将其(java项目)依赖项编译到其jar中

时间:2013-09-24 12:38:07

标签: android eclipse android-library

我有一个 android libary项目 - MonitoringModel - 这取决于 常规java项目 - Helpers(依赖项在java构建路径> Projects中设置。Helpers项目在MonitoringModel的“订单和导出”选项卡中勾选。 MonitoringModel生成一个jar,我将其放到servlet项目的libs文件夹中,如here所述。一切都很好,直到 servlet 需要来自Helpers项目的方法:

Caused by: java.lang.NoClassDefFoundError: gr/uoa/di/java/helpers/Utils
 at gr.uoa.di.monitoring.model.Battery$BatteryFields$1.parse(Battery.java:59)
 at gr.uoa.di.monitoring.model.Battery$BatteryFields$1.parse(Battery.java:1)
 at gr.uoa.di.monitoring.model.Battery.parse(Battery.java:117)
 ... 24 more
Caused by: java.lang.ClassNotFoundException: gr.uoa.di.java.helpers.Utils
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)


我意识到导出的jar(来自MonitoringModel)没有Helpers个包。 Helpers项目没有创建任何jar,因此我尝试将其bin/文件夹添加为Add Class Folder


enter image description here

在“订单和导出”标签中添加它:

enter image description here

但仍然没有快乐。

那我该如何设置呢?

RECAP:我所追求的是一种将常规java项目添加到android库项目中的方法并在android的jar中编译图书馆项目不知何故。问题不在于没有导出(java)类 - 因为使用这些java类的方法不能正确地编译在jar 。所以当他们被调用时,抛出上面的异常。 Battery$BatteryFields$1.parse方法为here

注意:将Helpers项目直接添加到servlet项目不会阻止异常 。抛出异常是因为当MonitoringModel.parse()调用Helpers.listToString()后,无法在monitoringmodel.jar 中找到 目前,我必须simply add(请参阅复制粘贴)将Helpers 添加到MonitoringModel

1 个答案:

答案 0 :(得分:0)

您必须独立编译Helper Java项目,并像普通Java JAR一样导出JAR

然后,您必须将此JAR添加到Monitor Android Library LIBS文件夹。

现在您可以将Monitor Android Library添加到另一个项目(来自Android Libraries框),它将拥有您需要的源。

问题是项目选项卡不再编译自某些ADT版本以来引用的项目,所以它没用。