2010-02-03 44 views
2

我正在查看一個非常老的項目,並試圖修復該項目面臨的與其JSP頁面相關的一些問題,這些問題引發了空指針異常。 JSP頁面像下面的示例一樣拋出空指針異常。JSP空指針異常問題疑難解答

/e2fo/tools/user/search/searchUser.jsp. Exception thrown : java.lang.NullPointerException 
    at com.ibm._jsp._searchUser_5F_TA._jspService(_searchUser_5F.java:207) 

現在這個問題是不可複製的,所以只是通過在異常看着上面我需要弄清楚放在哪裏可能是問題。 據我所知,JSP頁面被編譯成java servlets,因此在異常堆棧中顯示的.java文件就是servlet文件。這是一箇中間文件,我們無法看到這一點,我正在運行websphere 6.1。在這種情況下,如何確定或者將servlet的行號映射到JSP文件?

回答

2

我最後一次遇到這種情況時,中間文件在我查找時就消失了。我爲解決這個問題所做的是在JSP中引入了一個故意的編譯器錯誤並再次運行它。當它遇到該異常時,它會保存Servlet源,以便您可以更正代碼錯誤。

我傾向於去底部,並把:

<% novariable.toString(); %> 
+0

這適用於我。萬分感謝。 – Shamik 2010-02-03 16:46:32

0

您可以在相關服務器的工作目錄中找到已編譯的JSP文件。我不再做Websphere(但是我知道它是建立在Tomcat的基礎之上的,默認情況下,Tomcat將編譯的JSP文件存儲在安裝目錄的/work文件夾中。看看它,也許它使用相同的文件夾名稱。

如果仍然徒勞,那麼在Websphere的根文件夾內對文件名爲_searchUser_5F.java的文件進行基於平臺的文件搜索。

+0

我在那找到.class文件但沒有.java文件。 – Shamik 2010-02-03 16:27:01

1

嘗試在JSP引擎配置使用classdebuginfo參數。

如果您想嘗試查看生成的.java文件,則需要使用保持生成的參數。

知道在哪裏可以設置此參數,請參閱配置JSP引擎參數(http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/tweb_jspengine.html

參考:http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rweb_jspengine.html

可能是這個鏈接可以幫助:調試JSP文件在服務器上(http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.iseries.doc/info/welcome_base.html