使用两个EAR的Web应用程序上的NoClassDefFoundError

时间:2011-01-10 10:31:31

标签: java java-ee jersey jax-rs

我已经被困在一个问题上几天了,我即将放弃。需要你的帮助! :)

这就是事情:

我正在开发一个Web应用程序,我正在尝试创建移动版本(至少使用Jersey的Web服务)。

所以现在它看起来像这样:

  • 服务器
    • WebApp EAR
      • WebApp war
    • WebAppMobile EAR
      • WebAppMobile战争

我认为这是最好的方法(任何评论?)。

我现在正在使用Jersey,轻松创建我的WebServices。

我成功地设法划分了网络环境,我可以获得我的资源,一切都很好。我现在需要做的是从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>

有任何线索吗? 甚至可以在这两个包之间建立连接吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我(临时?)通过从我的WebApp项目创建JAR并将其包含在我的WebAppMobile项目中来修复它。 然后我认为没有办法从另一场战争中实例化对象,但如果有人设法做到这一点,我会有兴趣知道如何:)