JavaRESTAPI返回HTTP状态404

JavaRESTAPI返回HTTP状态404,java,web-services,jersey-2.0,Java,Web Services,Jersey 2.0,我有一个简单的RESTAPI,我正在尝试运行,它给了我一个HTTP404错误。AFAICS看起来不错,但obv不是。。。 Tomcat正在运行,我让Eclipse浏览器推出了HTTP404。Tomcat对所有错误都没有帮助,但它们都只是警告,但如果需要的话,我可以在这里弹出它们,这会使问题变得混乱 我认为这与jersey格式、xml或两者有关,但不确定 *****更新了问题以包含xml更新和tomcat错误****** 因此,我的班级是: package WS; import javax.ws

我有一个简单的RESTAPI,我正在尝试运行,它给了我一个HTTP404错误。AFAICS看起来不错,但obv不是。。。 Tomcat正在运行,我让Eclipse浏览器推出了HTTP404。Tomcat对所有错误都没有帮助,但它们都只是警告,但如果需要的话,我可以在这里弹出它们,这会使问题变得混乱

我认为这与jersey格式、xml或两者有关,但不确定

*****更新了问题以包含xml更新和tomcat错误******

因此,我的班级是:

package WS;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

//annotations
@Path("/book")
public class Book{
    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayHelloXML(){
        String response = "<?xml version='1.0'?><hello>Hello there</hello>";
        return response;
    }
}
包WS;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.products;
导入javax.ws.rs.core.MediaType;
//注释
@路径(“/book”)
公共课堂用书{
@得到
@生成(MediaType.TEXT\u XML)
公共字符串sayHelloXML(){
String response=“你好”;
返回响应;
}
}
我的Xml是这样的:(注意,我想我使用的是jersey 2.0,所以我不需要在这里有任何东西?)


雷斯塔皮
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
我的申请
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
WS
我的申请
/原料药/*
。。。因此,我导入的LIB是:

严重:为servlet MyApplication分配异常 java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer位于 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) 在 org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520) 在 org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501) 在 org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:120) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095) 在 org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 位于java.lang.Thread.run(未知源)

当我点击时返回浏览器时出错

javax.servlet.ServletException:实例化servlet类时出错 org.glassfish.jersey.servlet.ServletContainer org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(未知源)

根本原因java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang。
<?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>RestApi</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>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <!-- The package where your resource classes are -->
        <param-value>WS</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>MyApplication</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
<servlet>
    <servlet-name>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <!-- The package where your resource classes are -->
        <param-value>WS</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>MyApplication</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
@ApplicationPath("/api")
public class MyApplication extends ResourceConfig {
    public MyApplication() {
        packages("WS");
    }
}