我知道这个问题已经在这里发布过,但是我似乎找不到答案。
我试图从“ 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>
希望对您有帮助。祝一切顺利,编码愉快。