每次我用eclipse调试我得到一个Nullpointer异常?

每次我用eclipse调试我得到一个Nullpointer异常?

问题描述:

当我在jboss或tomcat上调试我的应用程序时,我得到一个NullpointerException行,我把第一个断点放入了。我使用了eclipse -clean,重新启动了我的机器,...没办法。只是无法摆脱它。每次我用eclipse调试我得到一个Nullpointer异常?

堆栈跟踪

2011-02-02 15:13:34,848 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-192.168.1.128-8080-2) #{userController.doLogin}: java.lang.NullPointerException 
    javax.faces.FacesException: #{userController.doLogin}: java.lang.NullPointerException 
     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) 
     at javax.faces.component.UICommand.broadcast(UICommand.java:387) 
     at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329) 
     at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304) 
     at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261) 
     at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474) 
     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) 
     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) 
     at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) 
     at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) 
     at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at de.simplefact.navv.gui.common.viewstate.ViewExpiredFilter.doFilter(ViewExpiredFilter.java:76) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
     at java.lang.Thread.run(Thread.java:619) 
    Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException 
     at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) 
     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
     ... 38 more 
    Caused by: java.lang.NullPointerException 
     at de.simplefact.navv.gui.common.controller.UserController.doLogin(UserController.java:58) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.el.parser.AstValue.invoke(AstValue.java:170) 
     at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
     at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) 
     at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 
     ... 39 more 
+0

不要让你在现场,但也许你有一些意外抛出NullPointerException的代码行。这值得仔细检查。这样的东西以前发生在我身上。 – Neil 2011-02-02 14:34:33

+0

stacktrace - 见上面..我非常肯定,在我的源代码中没有空指针。无论我放置哪个断点 - 它都会炸掉应用程序。 – justastefan 2011-02-02 14:44:02

+1

那么,第58行UserController.java中的内容是什么,为什么它可能为空? – mglauche 2011-02-02 14:45:08

Nooooooooooooo ...如果你是一个非常自作聪明家伙,就像我咳嗽,你会使用表达式进行调试。我的一个表达式是“throw new NullpointerException();”..所以每次我到达第一个调试标记时,都会执行该表达式并强制应用程序崩溃。

..进一步思考你可能会用这个来破坏你的同事。当你的同事去喝咖啡时,添加一些“抛出新的NullpointerException();”到他在eclipse的调试视角中的表达,然后发现他是多么的聪明;-)。

的UserController中值为空,因此当JSF评估#{UserController.whatever}的抛出NullPointerException。

您是否试图在UserController.java:58上分配一个虚拟值来区分是否仍然存在?你的断点在哪里?在UserController.java:58也是?

顺便说一句,从堆栈跟踪开始,它表明它不是一个错误,而是警告。您是否在调试选项上配置了Eclipse,以便如何使用NPE处理WARNING消息?