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

时间:2011-08-23 16:00:38

标签: java apache jsp tomcat netbeans

我一直在使用net beans ide开发一个项目6个月,以便开发一个电子教学网络应用程序。一切都在网络bean中运行良好。(该项目来自现有的资源,我不得不修改它,我没有开发整个应用程序)我在net beans中使用apache tomcat 7.当我创建war文件并部署它没有任何工作。我在我的会话变量中得到空指针异常,就像我从未给它们一个值。我无法理解问题是什么。我正在使用相同的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中使用了新文件

1 个答案:

答案 0 :(得分:7)

  

org.apache.jasper.JasperException:在第31行处理JSP页面/System.jsp时发生异常

第31行如下:

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

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

  1. sessionnullgetAttribute()将因NPE而失败。
  2. “教授”属性返回nullint的{​​{1}}自动装箱将因NPE而失败。
  3. 第一个原因不太可能,因为30号线首先会失败。我敢打赌,这是第二个原因。如果属性不是<=,则需要先检查。

    null

    也许您需要在更高级别解决它,即确保“教授”属性永远不会 Integer professor = session.getAttribute("professor"); if ((professor == null || professor <= 1) && ...


    对具体问题Java code belongs in Java classes

    无关。它将使调试,测试和维护变得更加容易。