【发布时间】:2014-07-21 12:53:45
【问题描述】:
我对 Java 很陌生,我基本上是从 PHP 开始接触 Java。
我正在尝试在 Jersey 和 Tomcat 的帮助下启动并运行一个 RESTful API。但我似乎犯了一个错误,我找不到与我得到的错误消息相同的任何帖子或线程。我将非常感谢有关此问题的任何帮助,谢谢!
这是我的 Maven 依赖项
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-servlet</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jdk-http</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-simple-http</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-http</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-servlet</artifactId>
<version>2.9</version>
</dependency>
</dependencies>
这是 web.xml
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
这是我的代码
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/account")
public class AccountREST
{
@GET
@Produces(MediaType.TEXT_PLAIN)
public String info(){
return "This is the RESTful API";
}
@GET
@Path("/getit")
@Produces(MediaType.TEXT_PLAIN)
public String getIt(){
System.out.println("Got it!");
return "Got it!";
}
}
当我进入 URL http://localhost:8080/rest/account/getit 时,我收到此错误消息,我无法破译
java.lang.NullPointerException
org.apache.catalina.loader.WebappClassLoader.binaryNameToPath(WebappClassLoader.java:2496)
org.apache.catalina.loader.WebappClassLoader.findLoadedClass0(WebappClassLoader.java:2702)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1223)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1175)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2451)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2440)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
【问题讨论】:
-
经过数小时的努力,我终于让它工作了。您发送的线程与我的问题间接相关。这是因为我没有正确实现 Jersey 的 API。所以这个问题是在外部库中触发的。我将向此线程发送一个答案,解释我所做的事情,以便其他人看到。
-
很高兴听到它,希望这个解释对将来的人有所帮助。
标签: java rest maven tomcat jersey