Java 为什么在这个REST教程中我会得到404?

Java 为什么在这个REST教程中我会得到404?,java,rest,tomcat,Java,Rest,Tomcat,我一直在关注这个REST教程: 我以前使用过REST,但不是从头开始,也不是使用Tomcat,所以我想我应该从头开始,从你开始。问题是,在本教程的第6.4步中,我得到了404 My 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/j

我一直在关注这个REST教程:

我以前使用过REST,但不是从头开始,也不是使用Tomcat,所以我想我应该从头开始,从你开始。问题是,在本教程的第6.4步中,我得到了404

My 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>de.vogella.jersey.first</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>de.vogella.jersey.first</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>
通过在浏览器中访问tomcat,它已经在localhost:8080上启动并运行。但是当我点击
http://localhost:8080/de.vogella.jersey.first/rest/hello
我得到的只是一个404

我是否遗漏了一些显而易见的东西?我一定是

如果有必要,这是在MacBook Pro上的Eclipse Helios中运行tomcat 6。

URL部分“de.vogella.jersey.first”需要是您的WAR部署单元的名称(或特定于web容器的方法,如
jboss web.xml
或tomcat
context.xml


至少对于普通的web应用程序来说是这样,我不知道教程为什么会提到显示名称。

您获得404的原因是因为您遵循了这些internet教程。它们充满了错误,因为作者把它们放在一起,从不更新它们。你需要阅读文档和购买书籍,这样才能了解实际情况。@hoperunsdeph我认为用这种方式对LAR典型的高质量、免费和信息丰富的资源进行分类是不公平的。(另外,本教程似乎应该花更多时间解释web应用程序部署)谢谢!你帮我解决了我的问题。基本上,我不需要访问和bam,它起作用了。有些人可能会觉得这些教程是在浪费空间,学习它们的人应该失败,但我发现,对于一些我在维护现有预构建的REST系统时没有完全掌握的基础知识,我有深刻的见解。谢谢
09/08/2014 9:35:47 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
09/08/2014 9:35:47 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:RAGRest' did not find a matching property.
09/08/2014 9:35:47 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
09/08/2014 9:35:47 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 337 ms
09/08/2014 9:35:47 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
09/08/2014 9:35:47 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.41
09/08/2014 9:35:47 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  de.vogella.jersey.first
09/08/2014 9:35:47 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class de.vogella.jersey.first.Hello
09/08/2014 9:35:47 AM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
09/08/2014 9:35:47 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.18 11/22/2013 01:21 AM'
09/08/2014 9:35:48 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
09/08/2014 9:35:48 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
09/08/2014 9:35:48 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/9  config=null
09/08/2014 9:35:48 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 956 ms