2014-05-04 127 views
1

我已经尝试了很多建议,但没有一个似乎对我有用。在tomcat上部署我的球衣应用程序时,不会发生错误。但是,当访问任何指定的路径,它使我404资源不可用。 我给你相关部分的我的文件:Tomcat 8和Jersey 2.7返回404错误

的web.xml

<web-app> 
<servlet> 
    <servlet-name>o2r</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.mypackage.project.MyClass</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>o2r</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<session-config> 
    <session-timeout>30</session-timeout> 
</session-config> 
</web-app> 

MyClass.java

package com.mypackage.project; 
... //imports etc 
@Path("control") 
public class MyClass 
{ 
    @GET 
    @Path("{param}") 
    public Response getMsg(@PathParam("param") String msg) 
    //this part is from some mykong tutorial 
    { 
    String output = "Jersey say : " + msg; 
    return Response.status(200).entity(output).build(); 
    } 
} 

的pom.xml

... 
<dependency> 
    <groupId>org.glassfish.jersey.containers</groupId> 
    <artifactId>jersey-container-servlet</artifactId> 
    <version>2.7</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.16</version> 
</dependency> 
... 

当试图访问

http://localhost:8080/MyClass/control/lala 

(应该返回“泽西岛说:拉拉”)它只是给了我404。 注意:MyClass是我的.WAR文件的正确名称。

+0

jersey.config.server.provider.packages - com.mypackage.project.MyClass或者只是com.mypackage.project? –

+0

与这个问题无关,但仍然是错误的:您错过了那个tomcat依赖关系的提供的范围,这可能导致依赖关系在编译范围上结束,而您根本不想在应用程序中部署该范围。它也是错误的版本。 – Gimby

回答

1

试试这个

com.mypackage.project,而不是com.mypackage.project.MyClass