【问题标题】:NoClassDefFoundError on Web Application using two EAR's使用两个 EAR 的 Web 应用程序上的 NoClassDefFoundError
【发布时间】:2011-01-10 10:31:30
【问题描述】:

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

事情是这样的:

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

所以现在看起来像这样:

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

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

我现在使用 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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2013-03-26
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多