我尝试使用Jersey在Eclipse上创建RESTful服务。
当我尝试在Eclipse中的localhost中运行时,我反复出现以下错误。
SEVERE: Servlet [Jersey Web Application] in web application [/TestPrject] threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
我的web.xml看起来像这样:
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>TestPrject</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.eviac.blog.MyTestSvc</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我在WEB-INF / lib下也有所有Jersey 2.0罐子。我正在使用JDK 1.7.0_79运行Apache Tomcat 8.0。
用于服务输入的类如下:
@Path("/")
public class MyTestSvc {
@GET
@Path("/callService")
@Produces({ "text/plain" })
public String userName() {
return "hello";
}
}
我可能会出错的任何想法?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您使用的是maven,请将以下依赖项添加到您的pom
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>{your version here (2.0)?}</version>
</dependency>
答案 2 :(得分:0)
根据服务类或控制器,您的网址似乎是这样的
ProjName /休息// callService
所以在服务类中进行
@Path("/service")
public class MyTestSvc {
@GET
@Path("/callService")
@Produces({ "text/plain" })
public String userName() {
return "hello";
}
}
然后url将是ProjName / rest / service / callService
答案 3 :(得分:0)
您的申请中有几个问题:
如果您使用的是Maven,请确保您具有以下依赖关系:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.23.2</version>
</dependency>
如果没有,请确保您在类路径上拥有所有jersey-container-servlet
工件依赖项。
web.xml
jersey.config.server.provider.packages
参数定义一个或多个包含特定于应用程序的资源和提供程序的程序包。变化:
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.eviac.blog.MyTestSvc</param-value>
</init-param>
要:
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.eviac.blog</param-value>
</init-param>
如果您需要添加更多套餐,请使用;
或,
将其分开。
一旦Tomcat 8.x支持Servlet 3.x,您就不需要web.xml
部署描述符来处理简单的应用程序。有关详细信息,请查看Jersey documentation regarding deployment in Servlet 3.x containers。
使用空字符串或仅使用斜杠作为值来避免@Path
注释。闻起来很糟糕。