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

标签 android eclipse noclassdeffounderror android-library

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

AndroidMonitoring # an android application
MonitoringModel # an android library project
DataServlet # servlet project

AndroidMonitoring(依赖于MonitoringModel,

in the Android section of the project properties )

编译和运行都很好,但我需要 MonitoringModel 类在 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 中文件的方法 - 这可能吗?我应该如何设置它?

编辑:MonitoringModel 是 here

最佳答案

解决了!

  1. 从 DataServlet 的 java 构建路径中删除依赖项
  2. 转到 MonitoringModel 项目并删除库属性,将其作为 Android 应用运行并将其重新制作为库(来自 here) 清理 MonitoringModel 项目
  3. 从 bin/中获取 monitoringmodel.jar 并将其放入 DataServlet/WEB-INF/lib
  4. 在服务器上刷新并运行
  5. done !

将尝试改进这个 hack(顺便说一句,链接到外部 jar 似乎不起作用)- 任何更好的想法都将被接受为答案-但是现在关闭它。

编辑:显然第 3 步可以通过从 DataServlet/WEB-INF/lib/monitoringmodel.jar 创建一个硬链接(hard link) 来代替到 monitoringmodel.jar - 仍在测试这个,因为一些 Action 序列打破了我认为的链接。符号链接(symbolic link)似乎不起作用 - 报告为 bug

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

  1. 从 DataServlet 的 java 构建路径中删除依赖项
  2. 将 monitoringmodel.jar 从 bin/硬链接(hard link)到 DataServlet/WEB-INF/lib。我使用了 shell 链接扩展,但是这个:

    mklink /H c:\path\to\WebContent\WEB-INF\lib\monitoringmodel.jar c:\path\to\bin\monitoringmodel.jar
    

    应该也可以

  3. 现在,每次您在监控模型中进行更改时,jar 都会更新。您只需刷新 servlet 项目(默认情况下将自行重新部署到服务器上)

澄清:当然,servlet 项目并不打算使用 android.* 类 - 这不是我的问题 - 我的问题是将模型代码放在一个地方和这个地方必须是一个安卓库

关于android - eclipse 中的 java servlet 项目和 android 库项目 - NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419425/

相关文章:

android - 带有带有 2 个按钮布局的 Contentview 的自定义对话框 - 监听器?

安卓屏幕方向冲突

android - 尽管创建了 channel ,但通知未显示在 Android O 中

java - 如何在 Eclipse 的独立(Swing)应用程序中配置 hibernate ?

java - 使用 Apache Commons VFS 时,为什么我的小程序中会出现 NoClassDefFoundError?

selenium - 遇到错误 : java. lang.NoClassDefFoundError: com/google/common/collect/ImmutableList$Builder

android - glReadPixels 到 EGLImage 直接纹理比 glReadPixels 到 ByteBuffer 和 glTexSubImage2D 慢?

安卓NDK : custom pre-build step?

java - Android 修复使用后退按钮关闭主要 Activity

java - 为什么我在指向 ServletFileUpload 的 HttpServletRequest 上收到 NoClassDefFoundError?