Jersey2样本rest服务失败

我正在尝试使用Jersey2构建示例REST服务:

这是我的POM依赖项:

  junit junit 3.8.1 test   org.glassfish.jersey.core jersey-client 2.4.1   org.glassfish.jersey.containers jersey-container-servlet 2.6   org.glassfish.jersey.core jersey-server 2.6   org.glassfish.jersey.bundles.repackaged jersey-guava 2.6   

这是我的web.xml:

  jerseysample  Jersey REST Service org.glassfish.jersey.servlet.ServletContainer  javax.ws.rs.Application com.adaequare.rest.config.JerseyResourceInitializer  1   Jersey REST Service /rest/*   

这是我的ResourceConfig实现:

 package com.adaequare.rest.config; import org.glassfish.jersey.server.ResourceConfig; public class JerseyResourceInitializer extends ResourceConfig { public JerseyResourceInitializer() { packages(true, "com.adaequare.resource"); } } 

最后这是我的示例类:

 package com.adaequare.resource; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello") public class Hello { @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello(){ return "Hello Jersey

Hello Jersey

"; } @GET @Produces(MediaType.TEXT_PLAIN) public String sayPlainTextHello() { return "Hello Jersey"; } // This method is called if XML is request @GET @Produces(MediaType.TEXT_XML) public String sayXMLHello() { return "" + " Hello Jersey" + ""; } }

在将其部署到Tomcat时,我尝试访问以下URL:

 http://localhost:8080/jerseysample/rest/hello 

以下是我得到的例外情况:

 javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:619) root cause java.lang.NoSuchFieldError: INCLUDE_ALL org.glassfish.jersey.server.ResourceConfig$State.(ResourceConfig.java:110) org.glassfish.jersey.server.ResourceConfig.(ResourceConfig.java:351) org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.(ResourceConfig.java:1016) org.glassfish.jersey.server.ResourceConfig.forApplicationClass(ResourceConfig.java:325) org.glassfish.jersey.servlet.WebComponent.createResourceConfig(WebComponent.java:459) org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:302) org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:168) org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358) javax.servlet.GenericServlet.init(GenericServlet.java:160) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:619) 

无法理解我所缺少的东西。 有人可以指出吗?

所有Jersey依赖项应该使用相同的版本,即对于org.glassfish.jersey.core它应该是2.6而不是2.4.1