简体   繁体   English

Struts应用程序给出Null指针异常

[英]Struts application giving Null Pointer Exception

Following is the error I'm getting: 以下是我遇到的错误:

Struts Problem Report 支柱问题报告

Struts has detected an unhandled exception: Struts已检测到未处理的异常:

Messages: java.lang.NullPointerException File: org/apache/jsp/WEB_002dINF/jsps/api/multilineOUT_jsp.java Line number: 160 消息: java.lang.NullPointerException 文件: org / apache / jsp / WEB_002dINF / jsps / api / multilineOUT_jsp.java行号: 160

org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) org.apache.catalina.core.Appli org.apache.jasper.JasperException:java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)org .apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)javax.servlet.http.HttpServlet.service(HttpServlet.java:727) )org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.catalina.core .ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)org.apache.catalina.core.Appli cationDispatcher.processRequest(ApplicationDispatcher.java:486) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInt cationDispatcher.processRequest(ApplicationDispatcher.java:486)org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)org.apache。 struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)com。 opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInt erceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn erceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)org.apache.struts2.interceptor.validation。 AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.symphony.java:249)com.open。拦截器.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)com.opensymphony xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionIn vocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.Def vocation.java:249)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation。 invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor。 MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)com.opensymphony.xwork2。 DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)com.opensymphony.xwork2.Def aultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInter aultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.x2拦截器.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chainingonyceptor.java:145)com。 xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com。 opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInter ceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.jkit.loginapi.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:32) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) ceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke( DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ExceptionMappingInterapping拦截(ExceptionMappingInterceptor.java:187)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.jkit.loginapi.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:32)com.opensymphony.xwork2.DefaultActionInvocation。 invoke(DefaultActionInvocation.java:249)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.Abstrac org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)org.apache.catalina.core。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)org.apache。 catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter。 java:408)org.apache.coyote.http11.Abstrac tHttp11Processor.process(AbstractHttp11Processor.java:1040) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) tHttp11Processor.process(AbstractHttp11Processor.java:1040)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run( TaskThread.java:61)java.lang.Thread.run(Thread.java:745)

java.lang.NullPointerException org.apache.jsp.WEB_002dINF.jsps.api.multilineOUT_jsp._jspService(multilineOUT_jsp.java:160) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.co java.lang.NullPointerException org.apache.jsp.WEB_002dINF.jsps.api.multilineOUT_jsp._jspService(multilineOUT_jsp.java:160)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)javax.servlet.http .HttpServlet.service(HttpServlet.java:727)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)org.apache .jasper.servlet.JspServlet.service(JspServlet.java:334)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)org .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain .java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.catalina.co re.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.j re.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)组织。 apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java: 186)com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor。 java:256)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.j ava:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFil ava:176)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept( ValidationInterceptor.java:265)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.symphony DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2。拦截器.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFil terInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.intercept terInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor。拦截(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor。 CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.intercept or.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActi 或.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2。 xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249mph)com。 xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActi onInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.jkit.loginapi.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:32) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsAc onInvocation.java:249)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.interceptor.ServletConfigInterceptor。拦截(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)com.opensymphony.xwork2.DefaultActionInvocation。 invoke(DefaultActionInvocation.java:249)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)com.jkit.loginapi.interceptor。 LoginInterceptor.intercept(LoginInterceptor.java:32)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsAc tionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) org.apache.cat tionProxy.java:54)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2。 dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 208)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:501)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)org.apache.catalina.core。 StandardEngineValve.invoke(StandardEngineValve.java:116)org.apache.cat alina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) alina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)java.util.concurrent.ThreadPoolExecutor $ Worker.run( ThreadPoolExecutor.java:615)org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)java.lang.Thread.run(Thread.java:745)

Following is the error on the server console: 以下是服务器控制台上的错误:

inside GraphView3Redirect Action First view donennn inside GraphView3Redirect Action sIZEeeee :1 ---------success-------- --Calling One--13 Inside getTPN1 Outborn Method Done --Calling Myid--2 Inside getTPN1 Outborn Method Done ---------success2-------- --Calling One--13 Inside getTPN1 Method Done --Calling Myid--2 Inside getTPN1 Method Done Myid >> 2 One >> 13 two >> null ---inside JSP Myid--- 1 Jan 07, 2015 1:58:46 PM org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException 在GraphView3Redirect动作内部在GraphView3Redirect动作sIZEeeee中的第一个视图donennn:1 ---------成功---------在OneTP的内部调用1--13 getTPN1脱机方法完成-在Myid--2的内部调用getTPN1完成的外生方法--------- success2 ---------调用1--13内部getTPN1方法完成-调用Myid--2内部getTPN1方法完成Myid >> 2一个> > 13两个>> null --- inside JSP Myid --- 2015年1月7日1:58:46 PM org.apache.catalina.core.ApplicationDispatcher调用SEVERE:Servlet jsp的Servlet.service()抛出异常java。 lang.NullPointerException

Below is the multilineOUT.jsp code: 下面是multilineOUT.jsp代码:

                String one =(String)session.getAttribute("one"); 
                String two =(String)session.getAttribute("two"); 
                String myid =(String)session.getAttribute("myid");
                System.out.println("Myid >> "+myid);
                System.out.println("One  >> "+one);
                System.out.println("two  >> "+two);
               // String hid="17";
                //System.out.println("---1----"+hid);
                //My Hospital
                String myid1 =(String)session.getAttribute("myid1");
                if (!myid1.equals("agg"))
                {
                if (myid != null || myid !="")
                {
                    System.out.println("---inside JSP Myid---");
                    ArrayList<String> hobbies10 = new ArrayList<String>();
                    hobbies10 = (ArrayList<String>)session.getAttribute("datamy");

                    System.out.println("1");

                    String StringOfMarks10 [] = new String [hobbies10.size ()];

                    System.out.println("1A");

                    StringOfMarks10 =hobbies10.toArray(StringOfMarks10);

                    System.out.println("A");

                    double[] data10 = new double[StringOfMarks10.length];

                    System.out.println("B");

                    for(int i = 0; i < StringOfMarks10.length; i++)
                    {
                            //data10[i] = Double.parseDouble(StringOfMarks10[i]);
                        double  reval2 = Double.parseDouble(StringOfMarks10[i]);

                        System.out.println("C");

                        if (reval2 == -00.0)
                        {
                            data10[i] = Chart.NoValue;  
                        }else{
                            data10[i] = reval2;
                        }
                    }
                    System.out.println("My Hospital data array values :"+(ArrayList<String>)session.getAttribute("datamy"));

                    System.out.println("2");

                    layer.addDataSet(data10, 000000, "Your Hospital "+myid ).setDataSymbol(Chart.GlassSphere2Shape, 10);
                  //layer.addDataSet(data0Y, 000000, "Your Hospital "+myid );
                }    
                }


                //AVG view
                ArrayList<String> hobbies100 = new ArrayList<String>();
                hobbies100 = (ArrayList<String>)session.getAttribute("avgdata");

                System.out.println("3");

                String StringOfMarks100 [] = (String []) hobbies100.toArray (new String [hobbies100.size ()]);
                double[] data100 = new double[StringOfMarks100.length];
                for(int i = 0; i < StringOfMarks100.length; i++)
                {
                    //data100[i] = Double.parseDouble(StringOfMarks100[i]);
                        double  reval2 = Double.parseDouble(StringOfMarks100[i]);
                        if (reval2 == -00.0)
                        {
                            data100[i] = Chart.NoValue; 
                        }else{
                            data100[i] = reval2;
                        }
                }

               // String totalavg1 = (String)session.getAttribute("totalavg");
                layer.addDataSet(data100, 0xff0000, "Average").setDataSymbol(Chart.GlassSphere2Shape, 10);


                //1st Hospital
                  if (!myid1.equals("agg"))
                {
                if (one != null)
                {
                    System.out.println("---inside JSP One----");
                    ArrayList<String> hobbies1 = new ArrayList<String>();
                    hobbies1 = (ArrayList<String>)session.getAttribute("data0");

                    System.out.println("4");

                    String StringOfMarks [] = (String []) hobbies1.toArray (new String [hobbies1.size ()]);
                    double[] data = new double[StringOfMarks.length];
                    for(int i = 0; i < StringOfMarks.length; i++)
                    {
                        //data[i] = Double.parseDouble(StringOfMarks[i]);
                        double  reval2 = Double.parseDouble(StringOfMarks[i]);
                        if (reval2 == -00.0)
                        {
                            data[i] = Chart.NoValue;    
                        }else{
                            data[i] = reval2;
                        }
                    }
                    System.out.println("1st hospital data array values :"+(ArrayList<String>)session.getAttribute("data0"));

                    System.out.println("5");

                    layer.addDataSet(data, 0x3333ff, one).setDataSymbol(Chart.GlassSphere2Shape, 10);
                }
                }
                  if (!myid1.equals("agg"))
                  {

                if (two !=null )
                {
                    System.out.println("---inside JSP two----");
                    ArrayList<String> hobbies2 = new ArrayList<String>();
                    hobbies2 = (ArrayList<String>)session.getAttribute("data1");

                    System.out.println("6");

                    String StringOfMarks2 [] = (String []) hobbies2.toArray (new String [hobbies2.size ()]);
                    double[] data2 = new double[StringOfMarks2.length];
                    for(int i = 0; i < StringOfMarks2.length; i++)
                    {
                        //data2[i] = Double.parseDouble(StringOfMarks2[i]);
                        double  reval2 = Double.parseDouble(StringOfMarks2[i]);
                        if (reval2 == -00.0)
                        {
                            data2[i] = Chart.NoValue;   
                        }else{
                            data2[i] = reval2;
                        }
                    }
                    System.out.println("1st hospital data array values :"+(ArrayList<String>)session.getAttribute("data1"));

                    System.out.println("7");

                    layer.addDataSet(data2, 0x008800, two).setDataSymbol(Chart.GlassSphere2Shape, 10);
                }
                  }
                // Output the chart
                String chart1URL = c.makeSession(request, "chart1");

                // Include tool tip for the chart
                String imageMap1 = c.getHTMLImageMap("", "",
                    "title='[{dataSetName}] Hour {xLabel}: {value} MBytes'");
                %>
    <!-- End here senthil -->
    <s:form id="idLoginForm" action="apiExportGen" theme="simple"
        namespace="/ReportGen">
        <table cellspacing="0" cellpadding="0" border="0" width="100%"
            height="100%">
            <tr>

                <%-- <!-- SSS   <td width="10%" class="bodyLeft"><img src="/images/img_clear.gif" width="100%" height="10"></td> --> --%>
                <td width="100%" class="bodyMain">

                    <table cellspacing="0" cellpadding="0" border="0" height="100%"
                        width="100%">

                        <tr valign="top">
                            <td colspan="2">
                                <table cellspacing="0" cellpadding="0" border="0" width="100%"
                                    height="40">
                                    <tr>
                                        <td width="130"><img src="/MyLoginAPI/images/logo1.gif"
                                            width="190" height="40" alt="Chitrec" /></td>
                                        <td width="100%">
                                            <table cellspacing="0" cellpadding="0" border="0"
                                                width="100%">
                                                <tr>

                                                    <td width="70%"><img
                                                        src="/MyLoginAPI/images/topimage2.bmp" height="64"
                                                        width="100%" /></td>
                                                    <td width="15%"><img
                                                        src="/MyLoginAPI/images/topimage.gif" height="64"
                                                        width="100%" /></td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2" td width="100%">
                                <table width="100%" cellpadding="0" cellspacing="0"
                                    class="navTopRight"">
                                    <tr>
                                        <td width="5%%"></td>
                                        <td width="65%"><img
                                            src="/MyLoginAPI/images/topimage3.bmp" height="17"
                                            width="100%" /></td>
                                        <td width="30%" style="background: #0F4279;" align="right"><span
                                            class="navTopRightUser"><FONT COLOR="#ffffff"><span
                                                    class="navTopRightUser"> Your Hospital Id <s:property
                                                            value="%{#session['loginId']}" /></FONT> &nbsp; </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr valign="top">
                            <td width="100%" colspan="2" height="10"></td>
                        </tr>
                        <tr valign="top" height="100%">
                            <td width="100%">
                                <table cellspacing="0" cellpadding="2" border="0" width="100%">
                                    <tr>
                                        <td valign="top" width="16%"><%@ include
                                                file="/WEB-INF/jsps/includes/include_menu.jsp"%></td>
                                        <td>
                                            <!-- Page Details -->
                                            <table cellspacing="0" cellpadding="0" border="0"
                                                width="100%" class="sectionTitleBking">
                                                <tr>
                                                    <td class="text"><span class="pageTitle">
                                                            Infant Outborn </span></td>
                                                </tr>

                                                <tr>
                                                    <!-- <td class="TextLeft"><form:errors path="*" cssClass="errorBox" /><P></td> -->
                                                </tr>
                                            </table>
                                            <table cellspacing="0" cellpadding="0" border="0" width="70%"
                                                class="text textPadding">
                                                <tr height="30">
                                                    <s:if test="hasActionMessages()">
                                                        <div class="welcome">
                                                            <s:actionmessage />
                                                        </div>
                                                    </s:if>

                                                    <s:if test="hasActionErrors()">
                                                        <div class="errorBox">
                                                            <s:actionerror />
                                                        </div>
                                                    </s:if>
                                                </tr>
                                                <tr class="row tableData2">

                                                    <td width="100%"><img
                                                        src='<%=response.encodeURL("/MyLoginAPI/images/getchart.jsp?"+chart1URL)%>'
                                                        usemap="#map1" border="0"> <map name="map1"><%=imageMap1%></map>

                                                    </td>
                                                </tr>

                                            </table> <!-- End of page details --> <!-- footer --> <%@ include
                                                file="../includes/securefooter.jsp"%>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </s:form>
</body>
</html>

I had read earlier that this problem could be because of conflicting JAR files in the Tomcat library & the Web-INF library, but this is not the case. 我早些时候读过,这个问题可能是由于Tomcat库和Web-INF库中的JAR文件冲突,但事实并非如此。

I am very new to Java and am only maintaining this application. 我对Java非常陌生,只维护此应用程序。 It was running fine until December 26 2014 but when I returned in 2015, it started to throw this exception without any changes in the code. 直到2014年12月26日为止,它运行良好,但是当我在2015年返回时,它开始抛出此异常,而无需更改代码。 Please let me know if I need to post any other parts of my code here. 如果需要在此处发布代码的任何其他部分,请告诉我。

Look for places where you are using the . 寻找您正在使用的地方. operator since the left side being null is what causes the Null Pointer Exception error. 运算符,因为左侧为null是导致Null Pointer Exception错误的原因。

For example: 例如:

if (!myid1.equals("agg"))

If myid1 is null you will get the error. 如果myid1null ,则会收到错误消息。 You can circumvent this in this case by reversing the order of the comparison: 在这种情况下,您可以通过反转比较顺序来避免此情况:

if (!"agg".equals(myid1))

You could also check the variable for null before using the . 您还可以在使用之前检查变量是否为null . operator on it: 运算符就可以了:

if (myid1!=null && !myid1.equals("agg"))

Also, a string comparison like myid!="" doesn't work in Java. 另外,像myid!=""这样的字符串比较在Java中也不起作用。 It only compares the address not the contents. 它只比较地址而不是内容。 Anyway, the point is, you should do !"".equals(myId) or !myId.equals("") instead. 无论如何,重点是,您应该!myId.equals("") !"".equals(myId)!myId.equals("")

And it will be very helpful to you to learn to indent better. 学习更好地缩进将对您非常有帮助。 Good indenting helps a lot when debugging because its hard to debug if you can't tell if something is really in the if-statement or loop or not. 好的缩进在调试时有很大帮助,因为如果您无法确定是否确实存在if语句或循环中,则很难进行调试。

Here's what you need to do. 这是您需要做的。

  1. Get hold of the generated Java code for the JSP which is throwing the exception. 获取引发异常的JSP的生成的Java代码。 You should be able to find it in one of Tomcat's temporary or work directories. 您应该能够在Tomcat的临时目录或工作目录之一中找到它。 You are looking for a file named "multilineOUT_jsp.java". 您正在寻找一个名为“ multilineOUT_jsp.java”的文件。

  2. Figure out what is happening at line 160 of that file. 找出该文件的第160行发生了什么。

  3. Then follow the normal procedure for debugging an NPE as described here: What is a NullPointerException, and how do I fix it? 然后按照如下所述的调试NPE的正常过程进行操作: 什么是NullPointerException,如何解决? .

If you could show us line 160 of that file, we could be more specific. 如果您可以向我们显示该文件的第160行,则可以更具体一些。 Without that info, the best that we can do it offer educated guesses. 没有这些信息,我们可以做的最好的事情就是提供有根据的猜测。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM