在 glassfish 中加载 restful webapp 时如何解决 IllegalStateException?
How to solve IllegalStateException while loading the restful webapp in glassfish?
我正在尝试使用 this link 创建一个基本的 Hello world 应用程序。
我已经按照要求创建了所有内容,但出现以下错误:
Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/Lis
我的web.xml
<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>Restful Web Application</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
java.lang.NoSuchMethodError
只有在 运行 时才会发生错误,如果 class 的定义不兼容改变了。
我可以看到,您已经使用 Jersey 1.8
编译了您的代码并在 Glassfish 4.1.1
上部署了您的 webapp。
并且,根据 oracle official blog 之一,Glassfish 4.1.1
有 Jersey 2.2
.
因此,球衣版本不匹配(使用 Jersey 1.8
编译,但 Glassfish 使用 Jersey 2.2
)。因此,您在 运行 时收到此异常。
可能的解决方案是更改您的代码以支持 jersey 2.2
(当然也替换库)
我正在尝试使用 this link 创建一个基本的 Hello world 应用程序。
我已经按照要求创建了所有内容,但出现以下错误:
Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/Lis
我的web.xml
<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>Restful Web Application</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
java.lang.NoSuchMethodError
只有在 运行 时才会发生错误,如果 class 的定义不兼容改变了。
我可以看到,您已经使用 Jersey 1.8
编译了您的代码并在 Glassfish 4.1.1
上部署了您的 webapp。
并且,根据 oracle official blog 之一,Glassfish 4.1.1
有 Jersey 2.2
.
因此,球衣版本不匹配(使用 Jersey 1.8
编译,但 Glassfish 使用 Jersey 2.2
)。因此,您在 运行 时收到此异常。
可能的解决方案是更改您的代码以支持 jersey 2.2
(当然也替换库)