【发布时间】:2011-01-10 10:31:30
【问题描述】:
我已经被一个问题困扰了几天,我即将放弃。需要你的帮助! :)
事情是这样的:
我正在开发一个网络应用程序,我正在尝试创建移动版本(至少是网络服务,使用 Jersey)。
所以现在看起来像这样:
- 服务器
- WebApp EAR
- WebApp 大战
- WebAppMobile EAR
- WebAppMobile 战争
- WebApp EAR
我认为这是最好的方法(任何评论?)。
我现在使用 Jersey 来轻松创建我的 Web 服务。
我成功地划分了网络上下文,并且我可以访问我的资源,一切都很好。我现在需要做的是从 WebAppMobile 项目中获取 WebApp 包。我已经在构建路径中包含了引用(使用 Eclipse),它正在编译。
我唯一的问题是我无法实例化位于 WebApp 战争中的任何对象,它给了我一个 NoClassDefFoundError :
错误 500:java.lang.NoClassDefFoundError:my.package.my.class
最奇怪的是我实际上可以访问一些对象的静态局部变量,这意味着我的应用可以看到它们......至少,我认为它可以......
我认为这来自 Jersey 类路径,因为它正在执行自己的重定向以访问我的资源。这是我的 web.xml(来自 WebAppMobile 项目):
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>WebAppMobile</display-name>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.classpath</param-name>
<param-value>my.webapp</param-value> (here's just a try)
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.webapp;my.webappmobile</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
</web-app>
有什么线索吗? 这甚至可能在这两个包之间建立联系吗?
非常感谢!
【问题讨论】:
标签: java jakarta-ee jersey jax-rs