1

我有一个android 库项目——MonitoringModel它依赖于一个常规的 java 项目—— Helpers(依赖项是在 java 构建路径 > 项目中设置的。该Helpers项目是在“订单和导出”选项卡中勾选的MonitoringModel)。MonitoringModel生成一个 jar,我将其放到 servlet 项目的 libs 文件夹中,如此处所述。一切都很好,直到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


在此处输入图像描述

也将其添加到“订单和导出”选项卡中:

在此处输入图像描述

但仍然没有喜悦。

那么我应该如何设置呢?

回顾:我所追求的是一种将常规 java 项目添加到 android 库项目中并以某种方式将其编译到 android 库项目的 jar 中的方法。Τ他的问题不在于(java)类没有导出 - 因为使用这些java类的方法没有正确编译到jar中。所以当他们被调用时,上面的异常就会被抛出。方法在这里Battery$BatteryFields$1.parse

注意:将Helpers项目直接添加到 servlets 项目并不能防止异常。抛出异常是因为在monitoringmodel.jar中找不到后者的MonitoringModel.parse()调用 我不得不简单地将添加(请参阅复制粘贴)到.Helpers.listToString()
Helpers MonitoringModel

4

1 回答 1

0

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

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

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

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

于 2013-09-27T19:48:02.830 回答