[英]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在技術上只能有兩個原因:
session
為null
, getAttribute()
將因NPE而失敗。 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.