2014-11-24 67 views
1

任何人都可以帮助我解决这个问题。这是我第一次创建宁静的api。servlet的Servlet.service()[Jersey REST服务] java.lang.NullPointerException

的web.xml

<display-name>1FxAll</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class> 
    org.glassfish.jersey.servlet.ServletContainer 
</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.sample.blitz</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 

UserController.java

package com.sample.blitz; 

@Path("/user") 
public class UserController{ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String test(){ 
     return "user"; 
    } 
} 

全堆栈跟踪误差。

SEVERE: Servlet.service() for servlet [Jersey REST Service] in context with path [/1FxAll] threw exception [java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at com.sample.blitz.UserController.test(UserController.java:28) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:384) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:342) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:101) 
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1030) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:373) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

它不停地说,错误是在UserController的第28行,但是当我检查有没有线28

我使用Tomcat 7.0。我也尝试切换到玻璃鱼,但我得到了同样的错误。

谢谢..

+0

我认为有一个'/ 1FxAll'路径而不是'/ user'的调用?你是怎么给'UserController的test()'打电话的? – OO7 2014-11-24 05:44:32

+0

这是我使用的网址。 http:// localhost:8080/1FxAll/api/user – blitzen12 2014-11-24 05:52:47

+0

'/ 1FxAll'是您的应用程序的显示名称还是别的? – OO7 2014-11-24 06:04:30

回答

0

@Path("/user") &删除/使其为@Path("user")。像<url-pattern>/api/* Bcoz,U已经给定的路径,我认为有/

变化的双重发生的UserController类为

package com.sample.blitz; 

@Path("user") 
public class UserController{ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String test(){ 
     return "user"; 
    } 
} 
+3

这听起来不太可能。 [Jersey规范](https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e1721)表示:“@Path值可能以或不以'/'开头,它没有区别。同样,默认情况下,@Path值可能会或可能不会以'/'结尾,它没有区别,因此请求以'/'结尾或不以'/'结尾的URL都将被匹配。 – botchniaque 2014-11-24 09:03:48

+0

这是错误的,对用户无关紧要或者不要使用'/' – 2015-09-21 14:48:47

1

我只是张贴我的答案在这里。

我不知道什么是与相关和glassfish 4.04.1后,我从4.0改变的GlassFish版本4.1和lib文件夹中删除文件的球衣,似乎工作,但在Tomcat中我仍然有NullPointerException异常。这只适用于glassfish 4.1

0

你必须添加对问题的REST

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-spring3</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-bean-validation</artifactId> 
</dependency> 
-1

以下依赖当您创建的服务对象以新的关键字实例化。

Xservice x = new Xservice(); 
相关问题