我正在尝试使用Jersey + Google应用程序引擎在两天内构建一个简单的hello world应用程序。对于简单的AppEngine项目,我遵循了这些教程,并且这两个教程都可以很好地运行https://developers.google.com/appengine/docs/java/gettingstarted/creating https://developers.google.com/appengine/docs/java/webtoolsplatform
但现在我正在尝试添加泽西,并遵循本教程的http://www.vogella.com/articles/REST/article.html。
但是服务器一直在给我
com.sun.jersey.spi.container.servlet.ServletContainer:
java.lang.ClassNotFoundException
当我在web.xml中添加这些行时
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>TestServer</display-name>
<servlet>
<servlet-name>Jersey REST Service</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.test.myproject</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我已经从here下载了Jersey JAX-RS 2.1 RI bundle
,并按照教程中的描述在WEB-INF/lib
文件夹中添加了所有jar文件。即使过了两天,也没什么效果。我在谷歌上搜索了几次,显然使用Maven的人已经以某种方式解决了这个问题,但我没有使用Maven,编写该教程的人也没有。
只是为了检查在导入的Jersey jars
中是否存在com.sun.jersey.spi.container.servlet.ServletContainer
,我尝试用Java语言编写这个完全限定的名称,并让智能感知完成名称,但我无法在com.sun.je
之后获得任何智能感知,所以我最后的猜测是,在最新的泽西版本中,有一些包重新安排了,jersey
不再包含在com.sun
中。我已经筋疲力尽了,我将非常感谢任何形式的帮助。
发布于 2013-08-07 17:40:02
您已经下载了Jersey 2(它是JAX-RS 2的RI )。你提到的教程使用的是Jersey 1,从(here)下载Jersey 1.17.1应该就足够了。
Jersey 1使用com.sun.jersey
,而Jersey 2使用org.glassfish.jersey
,因此例外。
还要注意,以com.sun.jersey
开头的init-param
不会被Jersey 2识别。
编辑
Registering Resources and Providers in Jersey 2包含有关如何在Jersey 2中注册类/实例的附加信息。
发布于 2013-12-05 18:54:40
如果你使用的是jersey 2.x,那么你需要在web.xml中进行不同的配置,因为servlet类在其中发生了变化。您可以使用以下配置更新您的web.xml。
<servlet>
<servlet-name>myrest</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>your.package.path</param-value>
</init-param>
<init-param>
<param-name>unit:WidgetPU</param-name>
<param-value>persistence/widget</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myrest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
发布于 2013-11-01 02:24:58
在pom中添加此内容
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17.1</version>
</dependency>
https://stackoverflow.com/questions/18086218
复制相似问题