【发布时间】:2016-09-09 09:36:09
【问题描述】:
我正在尝试为一个安卓应用程序制作一个简单的休息服务,但我似乎无法让它工作。我得到 404(如果我使用 servlet 2.5 和 glassfish.servletcontainer)或带有 http 状态 500 的 Nullpointer,如果我使用 servlet 3.0,我会收到此错误消息。我无法解决问题。
我想我将球衣 1 和 2 混合在一起,但我不知道在哪里。
错误如下:
java.lang.NullPointerException
org.apache.catalina.loader.WebappClassLoaderBase.binaryNameToPath(WebappClassLoaderBase.java:2495)
org.apache.catalina.loader.WebappClassLoaderBase.findLoadedClass0(WebappClassLoaderBase.java:2711)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1184)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
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:522)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
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(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
我的 web.xml 看起来像这样:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>EndPoint</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EndPoint</servlet-name>
<url-pattern>/REST/*</url-pattern>
</servlet-mapping>
Pom 依赖:
<dependencies>
<!-- Jax RS -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- Jersey 2.23.2 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>
..还有简单的java类:
@ApplicationPath("/EndPoint")
public class EndPoint extends Application{
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response getMsg() {
return Response.status(200).entity("hai!").build();
}
}
【问题讨论】:
-
Yahoo,另一个可以通过不使用应用程序容器tomcat创建Web服务器和
web.xml定义路由来解决的问题......为什么人们坚持这种陈旧过时的技术? -
为什么?妈的,在学校教。这就是为什么。你建议我应该改用什么?
-
我对 Java 的主观选择是
vert.x。好处是:它不是一个应用程序容器,而是一个库,可以通过正常的应用程序运行或测试完全调试,并且不会遇到上述问题;编写 Web 服务器很简单;它在一个地方拥有出色的文档和教程;它写得非常干净,它的吞吐量比tomcat高得多。不,这不是我参与的项目 :) 对于 Java8 使用版本 3,对于 Java 7 版本 2。 -
好的!谢谢,我去看看:)
标签: java maven tomcat jersey tomcat8