2011-01-10 4 views
0

Я уже несколько дней пробовал проблему, и я собираюсь сдаться. Нужна ваша помощь! :)NoClassDefFoundError на веб-приложении с использованием двух EAR

Вот вещь:

Я работаю на веб-приложений, и я пытаюсь создать мобильную версию (по крайней мере, веб-службы, используя Джерси).

Так что теперь это выглядит следующим образом:

  • Сервер
    • WebApp EAR
      • WebApp войны
    • WebAppMobile EAR
      • WebAppMobile войны

Я думаю, что это лучший способ сделать это (любой комментарий?).

Я сейчас использую Джерси, чтобы легко создавать свои WebServices.

Успешно удалось разделить веб-контексты, и я могу достичь своих ресурсов, все в порядке. Теперь мне нужно сделать доступ к пакетам WebApp из проекта WebAppMobile. Я включил ссылку в путь сборки (используя Eclipse), и она компилирует ОК.

Единственная проблема у меня есть, я не могу создать экземпляр любой объект, находящийся в войне WebApp, это дает мне NoClassDefFoundError:

Error 500: java.lang.NoClassDefFoundError: my.package.my.class

Самая странная вещь, я на самом деле может достичь некоторых статике объектов локальные переменные, что означает, что мое приложение может их увидеть ... По крайней мере, я думаю, что это возможно.

Я думаю, что это происходит из пути класса Джерси, потому что он выполняет свое собственное перенаправление, чтобы достичь моих ресурсов. Вот мой 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> 

Любая подсказка? Возможно ли установить соединение между этими двумя пакетами?

Большое спасибо!

ответ

0

Я (временно?) Исправил это, создав JAR из моего проекта WebApp и включив его в мой проект WebAppMobile. Я тогда думаю, что невозможно создать объекты из другой войны, но если кому-то это удастся, мне было бы интересно узнать, как :)