2012-04-02 55 views
2

我遇到了一個錯誤,我能夠使用GAE dev服務器成功呈現網站上的所有頁面,但是當我部署更新的版本時,我得到了NPE在每一頁上。我在部署時沒有看到任何錯誤。沒有任何JSP重新編譯錯誤。在Google App Engine上調試編譯和部署的JSP

這裏有一個樣品例外:

Uncaught exception from servlet 
java.lang.NullPointerException 
    at org.apache.jsp.WEB_002dINF.views.index_jsp._jspInit(index_jsp.java:25) 
    at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:91) 
    ... 

我做了大多已被定型的變化和有趣的是,如果我更新的index.jsp回到它曾經是我的改變之前的變化,我還是得到NPE。

我只是使用標準JSTL和Sitemesh。我已經禁用了sitemesh過濾器來排除這種情況,仍然會出現錯誤。我仍在使用1.6.3 SDK(因爲maven-gae-plugin尚未更新)。

有沒有辦法查看GAE正在使用的已編譯JSP?

+0

因此,我刪除了地圖reduce servlet(它不再使用)並更新到1.6.4,並且一切似乎都正常工作......我不確定哪一個是原因。 – Tristan 2012-04-02 05:52:41

回答

0
  1. 轉到從臨時folder.I的特定行號(25)是不知道在哪裏在GAE的臨時文件夾位於though.The特定行號可能被調用的對象是空或的方法沒有初始化。這發生在jsp頁面初始化期間,而不是在編譯期間。

    org.apache.jsp.WEB_002dINF.views.index_jsp._jspInit(index_jsp.java:25) 
    
  2. 嘗試清除臨時文件夾的工作,正如你所提到的,使用舊的JSP也將拋出錯誤。

  3. 我真的懷疑在每個其他jsp頁面中都包含了一些內聯jsp頁面,那內聯jsp也可能導致這個問題。

0
java.lang.NullPointerException 
    at org.apache.jsp.WEB_002dINF.views.index_jsp._jspInit(index_jsp.java:25) 

_jspInit()方法是不是你自己的JSP代碼的一部分。它是JSP內部代碼的一部分。您無法通過修復自己的JSP代碼來修復它。

此異常的典型但是當你包括servletcontainer特定JSP API JAR在你的webapp的/WEB-INF/lib文件夾中的文件和JAR文件的不同 servletcontainer化妝/版本比你在哪裏實際部署的servletcontainer您WAR來。

您絕對不應該在/WEB-INF/lib中包含servletcontainer特定庫。全部刪除它們。 servletcontainer是負責提供它們的人。 /WEB-INF/lib應該只包含webapp特定的庫。原因不明的原因:How do I import the javax.servlet API in my Eclipse project?

+0

謝謝。我相信GAE更新了他們在1.6.3和1.6.4之間的JSP API,這使得上傳的已編譯的JSP中斷。 – Tristan 2012-04-02 18:17:55

0

事實證明,切換到GAE 1.6.4 API解決了這個問題。爲什麼有些初學者放棄了/WEB-INF/lib中的servletcontainer特定庫?我認爲這可能是由於上傳了1.6.3編譯的JSP引起的。

相關問題