gpt4 book ai didi

java - 异常报告为空,无法弄清楚如何

转载 作者:行者123 更新时间:2023-11-28 23:24:52 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is a NullPointerException, and how do I fix it?

(12 个回答)


5年前关闭。




Java 7、JSP、Spring 3、Apache-Tomcat 7.0.63。网 bean 。

我对现有的 JSP 文件进行了更改,并更改了支持表单对象。我检查了 JSP 以确保所有引用都由支持表单对象中正确名称的字段支持。

在 Controller 中,我有一个私有(private)的 saveEditedOrNewItem() ;它调用一个方法来初始化页面模型中的变量 - setCommonModelAttributesForEdit() .当前者调用后者时,程序会爆炸,抛出 NullPointerException,但我没有取消引用任何东西,我没有在调用中调用来获取参数或任何东西。其中一个参数为空,但这本身不会导致 NPE。

我在 setCommonModelAttributesForEdit() 的第一个可执行行上有一个断点;触发错误时未到达该断点(尽管它在先前的调用中执行并运行到完成而没有错误,因此该方法是可执行的)。

这是引发错误的代码:

    if (errors.hasErrors()) {
if (entityCode == null || entityCode.equals("")) { entityCode = "Select"; }
Integer entityId = prospectForm.getentityId();
String prospectName = prospectForm.getName();
Object leafNodeFlag = getLeafNodeFlag(request);
Boolean bLeafNodeFlag = (Boolean)leafNodeFlag;
boolean bbLeafNodeFlag = (boolean)bLeafNodeFlag;
Integer logoAttachmentId = prospectForm.getLogoAttachmentId();
ModelMap localModelMap = model;
// the following is line 474 in the stacktrace
setCommonModelAttributesForEdit(localModelMap, entityCode, entityId,
prospectName, bbLeafNodeFlag, prospectForm,
logoAttachmentId);
return prospectEditView;

这是错误堆栈跟踪:
java.lang.NullPointerException
at com.accesspointinc.crm.prospect.MyFormController.saveEditedOrNewProspect(MyFormController.java:474)
at com.accesspointinc.crm.prospect.MyFormController.saveNewProspect(MyFormController.java:434)
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:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.accesspointinc.commons.filter.SessionTimeoutCookieFilter.doFilter(SessionTimeoutCookieFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.accesspointinc.commons.filter.StatesFilter.doFilter(StatesFilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:322)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2516)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2505)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)

我“扁平化”了传递给 setCommonModelAttributesForEdit() 的所有参数;我在调用上有一个断点,可以检查所有传入的值。我什至确保我不必在方法调用中强制转换。 logoAttachmentId为空,其余的具有非空值。重复一遍,在 setCommonModelAttributesForEdit() 开头设置断点在此调用中未命中,但在较早的调用中已命中。

如果我对调用执行“步入”而不是“跳过”,我最终会得到一个 InvocationTargetException 构造函数,其目标为 NullPointerException;调用堆栈(最终)表明我正在通话中来自 SessionTimeoutCookieFilter.doFilter() ;该类是 GenericFilterBean 的扩展,它失败的行是 filterChain.doFilter(request, response);
所以它不是你妈妈的 NullPointerException。我没有取消引用我的代码中的任何内容,并且当我尝试在我已经在其中执行的类中调用私有(private)方法时它会停止,因此引用该方法的对象已经实例化。这些都不是静态方法。我已经多次“清理和编译”,我已经重新启动了 NetBeans,我已经重新启动了 Windows,我已经清理了浏览器的缓存。

谁能建议我还能做些什么来找到这个问题?

编辑:我不认为这有资格作为已作为副本关闭的问题的副本。仅仅因为问题涉及空指针并不意味着它是大“空指针”问题的副本。

此 NPE(自动框转换)的原因在其假定的副本中、评论中以及与此问题中出现的上下文不同的上下文中被提及一次。事实证明,当前的问题是通过将自动装箱作为参数传递给方法调用的一部分来回答的;在大问题中唯一提到它的是在赋值语句中。我应该在比我花更少的时间内弄清楚它,但它难倒了很多其他人,包括在 SO 上阅读它的每个人。 (它只有在被回答后才被标记为重复。)

在发布此内容之前,我查看了 Big Null Pointer Question,但我的问题的答案不存在。

最佳答案

有没有可能
1.) 您在调试时 session 即将到期?
2.)您的 Controller 被调用了两次(可能更多次),并且第一次出现预期值而它们在后续调用中不存在?

关于java - 异常报告为空,无法弄清楚如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com