我用Jersey写了一个非常简单的例子。我从jersey网站将最新的jar文件下载到WEB-INF中的lib文件夹中。我的班级和web.xml
在下面。
当我提供URL localhost:8080/SimpleJersey/rest/test
时,我得到404 error (not found)
。
然而,当我使用Maven时,它是有效的。我使用Eclipse Kepler、Glassfish 4服务器和Java 7。
我在非Maven版本中做错了什么?
谢谢。
类别:
package com.simplejersey;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/test")
public class MyResources
{
@GET
@Produces("text/plain")
public String getIt()
{
return "Hello there!";
}
}
Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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" id="WebApp_ID" version="3.1">
<display-name>SimpleJersey</display-name>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.simplejersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我在Michal Gajdos的这篇文章中找到了解决方案:Jersey REST Web Service、Tomcat、Eclipse和404';s
问题是(引用上述帖子):
Jersey 2.0无法识别名为
com.sun.jersey.config.property.packages
(web.xml)的init-param
。请尝试将其更改为jersey.config.server.provider.packages
,如ServerProperties.PROVIDER_PACKAGES
(链接)中所述。"
当你从显示旧解决方案或版本的网站上复制web.xml时要小心(就像我做的那样)。球衣也在更新。。。