2016-03-10 4 views
1

Я знаю, что эта проблема была размещена здесь раньше, но я не могу найти ответ на мой вопрос ..Tomcat + Джерси производит org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError

Я пытаюсь получить Джерси из «ProjectA», чтобы вызвать метод в POJO («PojoClass»), который бы создавал экземпляр объекта из импортированного класса («ForeignClass»), а затем вызывал один из его собственных методов .. но Я продолжаю получать ошибку NoClassDefFoundError относительно ForeignClass. Если я перейду PojoClass в Main, он найдет ForeignClass без проблем и создаст экземпляр объекта. Предполагается, что ForeignClass должен быть импортирован в WEB-INF/lib в ProjectA так или иначе, чтобы Джерси это узнал?

web.xml Projecta в:

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>PackageA</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>PackageA</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

PojoClass:

import PackageB.ForeignClass; 



@Path("/admin") 
public class PojoClass { 


    @GET 
    public void test(){ 

     ForeignClass fc = new ForeignClass(); 
     fc.testRest(); // << this method just prints "test" 

    } 

} 

А потом http://localhost:8080/ProjectA/rest/admin производит: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: PackageB.ForeignClass

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

+0

Вы можете проверить, присутствует ли ForeignClass в развернутой папке webapps? Как вы развертываете приложение? –

+0

Что такое «развернутая папка webapps»? Разве это не только WEB-INF/lib? Я использую web.xml для настройки процесса. это то, что вы подразумеваете под развертыванием приложения? –

+0

Нет, я имею в виду место, где присутствует ваш сервер tomcat. У него будет папка webapps, в которой будет развернут ваш проект. Все ваши файлы классов будут присутствовать там. (если это война) Итак, можете ли вы проверить, есть ли там файл класса для ForeignClass? Также вы можете вставить код ForeignClass? –

ответ

0

Я думаю, что вы вводите только PackageA, но foreignClass в PackageB. Вы можете попробовать этот код в web.xml:

<init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>PackageA,PackageB</param-value> 
    </init-param> 

Я надеюсь, что это полезно для вас. Все лучшее, счастливое кодирование.