我知道这个问题已经在这里发布过,但是我似乎找不到答案。

我试图从“ ProjectA”中获取Jersey来调用POJO(“ PojoClass”)中的方法,该方法将实例化导入类(“ ForeignClass”)中的对象,然后调用其自己的方法之一。持续收到有关ForeignClass的NoClassDefFoundError错误。如果我将PojoClass变成Main,它将毫无问题地找到ForeignClass并实例化该对象。是否应该以某种方式将ForeignClass导入到ProjectA的WEB-INF / lib中,以使Jersey能够识别它?

ProjectA的web.xml:

    <?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

非常感谢,

最佳答案

我认为您仅注入PackageA,但仅注入foreignClass中的PackageB。您可以在web.xml中尝试以下代码:

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


希望对您有帮助。祝一切顺利,编码愉快。

08-07 11:39