Java 在glassfish中加载restful webapp时如何解决IllegalStateException?

Java 在glassfish中加载restful webapp时如何解决IllegalStateException?,java,rest,jersey,glassfish-4,Java,Rest,Jersey,Glassfish 4,我正在尝试使用创建一个基本的Hello world应用程序 我已按要求创建了所有内容,但我发现以下错误: 加载应用程序时出现异常:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.apache.catalina.LifecycleException:java.lang.NoSuchMethodError:com.sun.research.w

我正在尝试使用创建一个基本的Hello world应用程序

我已按要求创建了所有内容,但我发现以下错误:

加载应用程序时出现异常: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>

Restful Web应用程序
泽西塞尔维特酒店
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
通用域名格式
1.
泽西塞尔维特酒店
/休息/*

如果类的定义发生了不兼容的更改,则只有在运行时才会发生错误

我可以看到,您已经使用
Jersey 1.8
编译了代码,并在
Glassfish 4.1.1
上部署了您的webapp

而且,根据oracle的其中一个
Glassfish 4.1.1
拥有
Jersey 2.2

因此,这意味着jersey版本不匹配(使用
jersey 1.8
编译,但Glassfish使用
jersey 2.2
)。因此,您在运行时会遇到此异常

可能的解决方案是将代码更改为支持jersey 2.2(当然也要替换库)

如果类的定义发生了不兼容的更改,则只有在运行时才会发生错误

我可以看到,您已经使用
Jersey 1.8
编译了代码,并在
Glassfish 4.1.1
上部署了您的webapp

而且,根据oracle的其中一个
Glassfish 4.1.1
拥有
Jersey 2.2

因此,这意味着jersey版本不匹配(使用
jersey 1.8
编译,但Glassfish使用
jersey 2.2
)。因此,您在运行时会遇到此异常

可能的解决方案是更改代码以支持
jersey 2.2
(当然也要替换库)