【问题标题】:Check '!= null" not working检查“!= null”不起作用
【发布时间】:2014-12-15 12:48:52
【问题描述】:

我在代码中遇到了"NullPointerException"。我们已经检查了 not null,但在下面的屏幕截图中它对我们不起作用。我已经检查了folderInfoData.getSelectedInfoRole() != null,但它进入了 if 语句。这是private SelectOption<String> selectedInfoRole; 类型。

如何解决这个问题?

18:26:22,589 246302 ERROR [zk.ui.impl.UiEngineImpl                           ] - 
java.lang.NullPointerException
    at com.csdcsystems.amanda.web.viewmodel.FolderProcessInfoViewModel.saveInfoDetails(FolderProcessInfoViewModel.java:234)
    at com.csdcsystems.amanda.web.viewmodel.FolderProcessInfoViewModel.saveProcessInfo(FolderProcessInfoViewModel.java:201)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.zkoss.bind.impl.ParamCall.call(ParamCall.java:113)
    at org.zkoss.bind.impl.BinderImpl.doExecute(BinderImpl.java:1748)
    at org.zkoss.bind.impl.BinderImpl.doCommand(BinderImpl.java:1509)
    at org.zkoss.bind.impl.BinderImpl.access$1500(BinderImpl.java:108)
    at org.zkoss.bind.impl.BinderImpl$CommandEventListener.onEvent0(BinderImpl.java:1378)
    at org.zkoss.bind.impl.BinderImpl$CommandEventListener.onEvent(BinderImpl.java:1330)
    at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2746)
    at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2717)
    at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2658)
    at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136)
    at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1765)
    at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1550)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1260)
    at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:603)
    at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:485)
    at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:494)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.csdcsystems.servlets.AmandaSessionFilter.doFilter(AmandaSessionFilter.java:46)
    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:99)
    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:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
18:26:22,597 246302  INFO [csdcsystems.amanda.web.AmandaPerformanceMeter     ] - Command name:saveProcessInfo 

这里是截图:

【问题讨论】:

  • 我们应该如何将您的图像复制粘贴到代码中?
  • 您的表达式求值屏幕截图告诉我们,该方法返回的值不是null。相反,toString 方法似乎打印了 null,这是一个区别。
  • @ZouZou 这一行给出 nullpointerException
  • @user3062776 你有NullPointerException吗?如果是这样发布堆栈跟踪和相应的行,因为它似乎值不为空。
  • 你确定.getFolderProcessInforecord()不能返回null吗?

标签: java string exception nullpointerexception operators


【解决方案1】:

我的猜测是您有一个 NullPointerException,因为 folderInfoData.getFolderprocessInforecord()folderInfoData.getSelectedInfoRole().getValue() 返回 null 然后您在其上调用 getInfoValue

为了帮助调试类似的问题,请尽量简化行:

infoRole = folderInfoData.getSelectedoInfoRole().getValue();
infoRecord = folderInfoData.getFolderprocessInforecord().getValue();
if (!infoRole.equals(infoRecord) {
  ...
}

这将在第二行报告 NullPointerException 并为您节省一些调试时间。

【讨论】:

  • @lvaylo 我检查它对我不起作用 validProcessInfoRow.getInfoType() == InfoType.CHOOSE && folderInfoData.getSelectedInfoRole() != null && folderInfoData.getFolderProcessInforecord() != null
  • @user3062776 那么folderInfoData.getSelectedInfoRole().getValue() 你确定它不为空吗?
  • folderInfoData.getSelectedInfoRole() 为空
  • 我猜你的意思是folderInfoData.getSelectedInfoRole().getValue()
猜你喜欢
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
相关资源
最近更新 更多