eclipse中的java servlet项目和android库项目-NoClassDefFoundError

eclipse中的java servlet项目和android库项目-NoClassDefFoundError,android,eclipse,noclassdeffounderror,android-library,Android,Eclipse,Noclassdeffounderror,Android Library,我的工作区中有一些项目: AndroidMonitoring # an android application MonitoringModel # an android library project DataServlet # servlet project AndroidMonitoring(取决于监控模型 ) 编译和运行都很好,但我需要监控模型类在DataServlet项目中也可用。我将该模型作为依赖项添加到DataServlet项目的Java构建路径中,但我得到: java.lang.

我的工作区中有一些项目:

AndroidMonitoring # an android application
MonitoringModel # an android library project
DataServlet # servlet project
AndroidMonitoring(取决于监控模型

)

编译和运行都很好,但我需要监控模型类在DataServlet项目中也可用。我将该模型作为依赖项添加到DataServlet项目的Java构建路径中,但我得到:

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)
我需要这个模型是一个Android库项目,因为它包含Android类——但也包含解析servlet中文件的方法——有可能吗?我应该如何设置


编辑:监控模型是

首先-我相信Java Web Project不会与任何Android特定类一起工作,原因有很多。
如果您的监控模型包含一些希望在Android和Web应用程序之间共享的Java代码,您可以将其提取到单独的Java项目中,并使用
Properties->Build Path
中的
Link Source
选项将其链接到两个项目。 解决了

  • 从DataServlet的java构建路径中删除依赖项
  • 转到
    MonitoringModel
    项目并删除library属性,将其作为Android应用程序运行,然后将其重新制作到库中(从)清理MonitoringModel项目
  • 从bin/中获取monitoringmodel.jar并将其放入
    DataServlet/WEB-INF/lib
  • 刷新并在服务器上运行
  • ! 将尝试并改进此黑客(链接到外部jar似乎不起作用,顺便说一句)-任何更好的想法都将被接受为答案-但现在关闭此

    编辑:步骤3。可以通过创建一个从
    DataServlet/WEB-INF/lib/monitoringmodel.jar到monitoringmodel.jar的硬链接来替代-由于某些操作序列破坏了链接,因此仍在测试此功能。但符号链接似乎不起作用——报告称这是一个错误

    EDIT2:下面的步骤似乎也很有效-但我保留了手动过程,因为它确实有效

  • 从DataServlet的java构建路径中删除依赖项
  • 将monitoringmodel.jar从bin/和硬链接到
    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库

    不,我想共享的类包含android和纯java导入。我有没有办法创建一个可以被android应用程序和web项目使用的库项目?没有办法。您的web项目没有访问Android SDK的权限,不应该访问。你的问题在于设计,接受不同的设计。问题解决了。@YekhezkelYovel:你必须加上@才能让我得到通知-你能详细说明你说的吗?例如,我可以把servlet项目变成android项目——你能建议一种不同的设计吗?监控模型是@Mr_and_Mrs_D,您曾写过“使用公共逻辑、常量、枚举等-它们应该在同一个类中,而不是复制粘贴在不同的类中”-因此,使用枚举、常量和纯java公共逻辑来分离java项目并使用它。不要将任何特定于Android的类拉入servlet项目。java我认为这是一个很好的例子——我在first look中没有看到依赖于Android的类。@Mr_和Mrs_,我在这里完成了。阅读您自己的帖子,告诉我您是否询问过将您的模型作为Android项目。在你理解自己的帖子之前,没有人能帮你。我的建议是重新思考你需要做或想做的一切,并重写你的问题。你那样做后再给我打电话。