我的工作区中有一些项目:
AndroidMonitoring # an android application
MonitoringModel # an android library project
DataServlet # servlet project
AndroidMonitoring(取决于MonitoringModel,
)
编译并运行得很好但我需要在DataServlet项目中也可以使用MonitoringModel类。我在ModelServlet项目的Java Build路径中添加了Model作为依赖项,但我得到了:
java.lang.NoClassDefFoundError: gr/uoa/di/monitoring/model/Battery
gr.uoa.di.monitoring.server.servlets.DataCollectionServlet.doGet(DataCollectionServlet.java:20)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
我需要Model作为Android库项目,因为它包含android类 - 但也包含解析servlet中文件的方法 - 是否可能?我该如何设置?
编辑:MonitoringModel为here
答案 0 :(得分:2)
解决了!
MonitoringModel
项目并删除库属性,将其作为Android应用程序运行重新创建到库中(来自here)DataServlet/WEB-INF/lib
将尝试改进这个黑客(链接到外部jar似乎没有工作btw) - 任何更好的想法将被接受为答案 - 但现在关闭它。
编辑:显然第3步可以通过创建从DataServlet/WEB-INF/lib/monitoringmodel.jar
到monitoringmodel.jar的硬链接来代替 - 仍然会在某些操作序列中断时对此进行测试这个链接起了作用。符号链接似乎不起作用 - 将其报告为bug
EDIT2 :以下步骤似乎也有效 - 但我保留手动程序,因为它肯定有效
将来自bin /的monitoringmodel.jar硬链接到DataServlet/WEB-INF/lib
。我使用了shell链接扩展但是:
mklink /H c:\path\to\WebContent\WEB-INF\lib\monitoringmodel.jar c:\path\to\bin\monitoringmodel.jar
也应该有用
现在,每当您在监控模型中进行更改时,jar都会更新。您只需刷新 servlet项目(默认情况下将自行重新部署在服务器上)
澄清:当然servlet项目不是要使用android.*
类 - 这不是我的问题 - 我的问题是将模型代码放在一个地方,这个地方必须是一个android文库子>
答案 1 :(得分:0)
首先 - 我认为由于许多原因,Java Web Project不能与任何Android特定类一起使用
如果您的MonitoringModel包含要在Android和Web应用程序之间共享的某些Java代码,则可以将其提取到单独的Java项目中,并使用Link Source
中的Properties->Build Path
选项将其链接到两个项目。