在apache tomcat 7.0上运行它时的jersey 2.7问题

我正在使用apache tomcat 7.0和eclipse创建一个jersey应用程序。 我在eclipse中创建了一个动态Web项目,并将资源文件定义为: –

import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; // Plain old Java Object it does not extend as class or implements // an interface // The class registers its methods for the HTTP GET request using the @GET annotation. // Using the @Produces annotation, it defines that it can deliver several MIME types, // text, XML and HTML. // The browser requests per default the HTML MIME type. //Sets the path to base URL + /hello @Path("/hello") public class Hello { // This method is called if TEXT_PLAIN is request @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" + ""; } // This method is called if HTML is request @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello() { return " " + "" + "Hello Jersey" + "" + "

" + "Hello Jersey" + "

" + " "; } }

web.xml文件也创建如下 –

   de.vogella.jersey.first  Jersey REST Service org.glassfish.jersey.servlet.ServletContainer  jersey.config.server.provider.packages de.vogella.jersey.first  1   Jersey REST Service /rest/*   

以下jar文件已添加到web-inf中的lib文件夹中,并且在部署war文件后也会在web-apps中的目录结构中出现。

一旦我启动tomcat和war文件,就会出现以下错误后出现的问题:

org.apache.catalina.LifecycleException:无法在org.apache.catalina.util.LifecycleBase.start(LifecycleBase。)启动组件[StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/de.vogella.jersey.first]]。 java:154)org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)org.apache.catalina.core .standardHost.addChild(StandardHost.java:634)org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1074)org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1858) )java.util.concurrent.Executors $ runnableAdapter.call(Executors.java:471)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run( FutureTask.java:166)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Th read.run(Thread.java:724)引起:java.lang.NoClassDefFoundError:org.glassfish.jersey.internal.ServiceFinder中的jersey / repackaged / com / google / common / base / Function。(ServiceFinder.java:165) org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory.getAllServletContainerProviders(ServletContainerProviderFactory.java:66)位于org.apache.catalina.core的org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartup(JerseyServletContainerInitializer.java:132) .standardContext.startInternal(StandardContext.java:5444)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)… 11更多引起:java.lang.ClassNotFoundException:jersey.repackaged.com。位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)的google.common.base.Function位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)… 16更多

我在lib文件夹中添加了以下jar:

 **/de.vogella.jersey.first/WebContent/WEB-INF/lib/guava-16.0.1.jar /de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-client.jar /de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-common.jar /de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-container-servlet-core.jar /de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-container-servlet.jar /de.vogella.jersey.first/WebContent/WEB-INF/lib/jersey-server.jar** 

但仍然会出现这个错误,请告诉我哪里出错了。

终于解决了。 请检查下面的jar文件。 使用这么多jar文件来实现REST服务真是令人厌恶。 可能是重新安装或轻松rest比运动衫更好。

 hk2-api-2.2.0.jar hk2-locator-2.2.0.jar hk2-utils-2.2.0.jar javassist-3.18.1-GA.jar javax.annotation-api-1.2.jar javax.inject-2.2.0.jar javax.ws.rs-api-2.0.jar jersey-client.jar jersey-common.jar jersey-container-servlet.jar jersey-container-servlet-core.jar jersey-guava-2.8.jar jersey-server.jar, validation-api-1.1.0.Final.jar 

希望有人可能会觉得这很有用。 以上是使用jersey版2.8的已知

我相信你遗失了谷歌番石榴依赖jar。 尝试下载并将它们添加到类路径中。

是否能够为Jersey 2.8提供基本的REST网络服务。如果有更好的方法可以让我知道。

pom.xml中:

   junit junit 3.8.1 test   org.glassfish.jersey.containers jersey-container-servlet-core 2.8   org.glassfish.jersey.containers jersey-container-servlet 2.8   

web.xml中:

  jersey-servlet  org.glassfish.jersey.servlet.ServletContainer   jersey.config.servlet.provider.webapp true  1   jersey-servlet /rest/*  

Greeting.java:

 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("greeting") public class Greeting { @GET @Produces(MediaType.TEXT_PLAIN) public String greeting(){ return "Welcome!!"; } } 

您需要将以下jar文件添加到web-inf / lib文件夹,还需要配置构建路径 – 右键单击​​您的项目 – 构建路径 – 配置构建路径 – 库 – 添加外部jar(全部添加)下面的jar文件)。 并重启服务器

JerseyLibs

jersey-guava-2.x.jar是您在运行时设置中可能缺少的jar – 您可能希望将来自Jersey JAX-RS 2.0 RI包的jaxrs-ri / ext下的所有扩展jar打包 – 请参阅https ://jersey.java.net/download.html