簡體   English   中英

訪問會話屬性時Tomcat和空指針異常

[英]Tomcat and null pointer exception when accesing session attributes

我一直在使用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:在第31行處理JSP頁面/System.jsp時發生異常

因此,第31行如下:

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

這里的NPE在技術上只能有兩個原因:

  1. sessionnullgetAttribute()將因NPE而失敗。
  2. 屬性“professor”返回null ,而<=int autoboxing將因NPE而失敗。

第一個原因不太可能,因為第30行將首先失敗。 我敢打賭,這是第二個原因。 您需要先檢查該屬性是否為null

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

也許你需要在更高層次上解決它,即確保“教授”attribtue 永遠不會為 null


具體問題無關Java代碼屬於Java類 它將使調試,測試和維護變得更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM