【问题标题】:Everytime i debug with eclipse I get a Nullpointer exception?每次我用 Eclipse 调试时,我都会得到一个 Nullpointer 异常?
【发布时间】:2011-06-20 00:31:42
【问题描述】:

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

堆栈跟踪

    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

【问题讨论】:

  • 不是让你当场,但也许你有一些代码行意外抛出 NullPointerException。值得仔细检查。我以前也遇到过类似的事情。
  • stacktrace - 见上文.. 我很确定我的源代码中没有空指针.. 无论我将断点放在哪里 - 它都会炸毁应用程序。
  • 那么,第 58 行的 UserController.java 中有什么,为什么它可以为 null ?
  • mToken = null; // mToken是String类型的成员变量

标签: java eclipse debugging exception


【解决方案1】:

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

.. 进一步思考你可能会用它来打扰你的同事。当你的同事去喝咖啡时,添加一些“throw new NullpointerException();”在 eclipse 的调试角度看他的表达,然后找出他有多聪明;-)。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 正是断点所在的位置,空指针出现..所以我也可以将它放在一些过滤器或转换器中 - 导致应用程序在到达断点时崩溃。也许“警告”是需要仔细观察的东西..我使用了一些默认配置进行日志记录..
    【解决方案3】:

    UserController 的值为 null,因此当 JSF 计算 #{UserController.whatever} 时会抛出 NullPointerException。

    【讨论】:

    • 在没有任何断点的情况下运行不会导致任何问题..所以我认为它必须处理调试..
    • ørn:没有断点运行没有问题!这是令人困惑的部分。
    • 您是在运行官方 JBoss 和 Tomcat 连接器与 Eclipse JEE 版本还是其他?
    • ørn:看看我的回答,您的问题应该是这样的:您的大脑运行智商是多少......小于或大于 40? ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2015-04-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多