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