Я уже несколько дней пробовал проблему, и я собираюсь сдаться. Нужна ваша помощь! :)NoClassDefFoundError на веб-приложении с использованием двух EAR
Вот вещь:
Я работаю на веб-приложений, и я пытаюсь создать мобильную версию (по крайней мере, веб-службы, используя Джерси).
Так что теперь это выглядит следующим образом:
- Сервер
- WebApp EAR
- WebApp войны
- WebAppMobile EAR
- WebAppMobile войны
- WebApp EAR
Я думаю, что это лучший способ сделать это (любой комментарий?).
Я сейчас использую Джерси, чтобы легко создавать свои 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>
Любая подсказка? Возможно ли установить соединение между этими двумя пакетами?
Большое спасибо!