2014-11-24 66 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(); 
相關問題