ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 访问会话属性时的Tomcat和空指针异常

2019-07-30 01:02:00  阅读:233  来源: 互联网

标签:java apache tomcat jsp netbeans


我一直在使用net beans ide开发一个项目6个月,以便开发一个电子学习web应用程序.所有东西在net beans中运行良好.(该项目来自现有的资源,我不得不修改它,我没有开发整个应用程序我在net beans中使用apache tomcat 7.当我创建war文件并部署它没什么工作.我在我的会话变量中得到空指针异常,就像我从来没有给它们一个值.我无法理解是什么问题.Iinside net beans我使用相同的tomcat.

    org.apache.jasper.JasperException: An exception occurred processing JSP page /System.jsp at line 31

28:       Integer intObj = new Integer(project_id);
29:       httpsession.setAttribute("project_id",intObj);
30:       Hashtable projects=(Hashtable)session.getAttribute("projectsprofessor");
31:       if((Integer)session.getAttribute("professor")<=1 &&
32:           projects.get(project_id)==null)
33:                    {
34:           request.getSession().setAttribute("errorMessage","This project belongs to another professor!");


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NullPointerException
    org.apache.jsp.System_jsp._jspService(System_jsp.java:149)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

在我的大多数页面都会发生这种情况.奇怪的是,某些会话变量不为空.
我无法理解在哪里集中注意力!

谢谢.

//编辑:解决了!问题是,在我得到的来源中,他们忘记了WEB-INF文件夹中的* .class文件,所以当我在NetBeans中清理和构建时,新类没有编译,而net bean使用了以前的来自WEB-INF文件夹的源.当我手动删除WEB-INF / Classes中的所有.class文件时,在下一个clean-build中使用了新文件

解决方法:

org.apache.jasper.JasperException: An exception occurred processing JSP page /System.jsp at line 31

因此,第31行如下:

if((Integer)session.getAttribute("professor")<=1 && ...

这里的NPE在技术上只能有两个原因:

>会话为null,getAttribute()将因NPE而失败.
>属性“professor”返回null并且< =的int autoboxing将因NPE而失败.
第一个原因不太可能,因为第30行将首先失败.我敢打赌,这是第二个原因.您需要先检查该属性是否为null.

Integer professor = session.getAttribute("professor");
if ((professor == null || professor <= 1) && ...

也许你需要在更高层次解决它,即确保“教授”attribtue永远不为空.

与具体问题无关,Java code belongs in Java classes.它将使调试,测试和维护变得更加容易.

标签:java,apache,tomcat,jsp,netbeans
来源: https://codeday.me/bug/20190730/1577053.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有