我正在尝试在 JBoss 7.1 AS 上运行 Jersey 2.1 REST 服务。我在部署期间收到 NoSuchMethodError: javax.ws.rs.core.Application.getProperties 错误:
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/RESTService]] (MSC service thread 1-9) StandardWrapper.Throwable: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:271) [jersey-server-2.1.jar:]
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:283) [jersey-container-servlet-core-2.1.jar:]
在 pom.xml 我有:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.1</version>
</dependency>
在 web.xml 中:
<servlet>
<servlet-name>RESTService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.gatekeeper.restservice.RESTApplication</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
以前我尝试使用 Jersey 1.17.1 并且它有效(在 JBoss 中禁用 resteasy 扫描和 jaxrs 扩展/子系统之后)。到目前为止,我发现了一篇类似的帖子(但使用 Tomcat),其中的结论是错误的 javax.ws.rs.core.Application 在运行时被绑定,并且绑定的类是“旧的”(JAX- RS 1.1) 版本。
任何帮助如何解决这个问题?我是 .net 人,我对 java 完全视而不见 :) 谢谢 Bartek