Java 404使用eclipse创建Web服务时

Java 404使用eclipse创建Web服务时,java,eclipse,rest,Java,Eclipse,Rest,为了实现REST Web服务,我将遵循本文: 并采取了以下步骤: 创建动态web项目 复制到WEB-INF/lib,如下所示 在这个包com.vogella.jersey.first中创建一个java类(与示例中相同),该包为GET注册其方法,并假定返回text/xml/html 在此处复制我的web.xml 运行我的web应用程序时,我收到404和此异常: ... Marking servlet Jersey REST Service as unavailable ott 30, 20

为了实现REST Web服务,我将遵循本文:

并采取了以下步骤:

  • 创建动态web项目
  • 复制到WEB-INF/lib,如下所示
  • 在这个包com.vogella.jersey.first中创建一个java类(与示例中相同),该包为GET注册其方法,并假定返回text/xml/html

  • 在此处复制我的web.xml

  • 运行我的web应用程序时,我收到404和此异常:

     ... Marking servlet Jersey REST Service as unavailable
    
    ott 30, 2015 9:31:58 AM org.apache.catalina.core.StandardContext loadOnStartup
    GRAVE: Servlet [Jersey REST Service] in web application [/com.vogella.jersey.first] threw load() exception
    java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1858)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1709)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5253)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5543)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    
    ott 30, 2015 9:31:58 AM org.apache.coyote.AbstractProtocol start
    INFORMAZIONI: Starting ProtocolHandler ["http-bio-8080"]
    ott 30, 2015 9:31:58 AM org.apache.coyote.AbstractProtocol start
    INFORMAZIONI: Starting ProtocolHandler ["ajp-bio-8009"]
    ott 30, 2015 9:31:58 AM org.apache.catalina.startup.Catalina start
    info: Server startup in 1506 ms
    
    • 这是什么意思
    • 如何修复它

    您没有注意到Vogella教程中的罐子与您项目中的罐子完全不同吗?项目中的罐子来自Jersey 1.x。本教程使用的是Jersey 2.x。因此web.xml中的配置是针对2.x的,这与1.x不同

    你可以下载Jersey 2.x。单击JAX-RS2.0RI捆绑包链接。你需要的所有罐子都在里面。请注意,该发行版中没有JSON/POJO支持JAR。您需要分别查找这些


    请确保删除项目中当前的所有jar,因为它们可能与较新版本冲突。

    能否检查jar是否部署在应用程序服务器的部署文件夹中。请确定该文件夹在哪里?在eclipse中或tomcat路径中?检查部署应用程序的tomcat文件夹中的jar文件/webapps//WEB-INF/libThreak@VivekSingh否,未部署我正在使用的tomcat上的任何内容该应用程序已部署,只是未部署到本地tomcat。我猜Eclipse会启动自己的内部实例。如果应用程序未部署,则不会出现该错误。错误是您在web.xml中声明的类不存在。它不存在,因为您使用了错误版本的Jersey Libraries Hanks@peeskillet,我修复了jar ri,但我仍然得到404,因为您将项目命名为project
    com.vogela.Jersey.first
    (默认为上下文路径),URI应该是
    http://localhost:8080/com.vogella.jersey.first/rest/hello
    如果是这样,我会被运行项目后加载的eclipse页面误导