2012-04-02 4 views
2

У меня запущена ошибка, когда я могу успешно отображать все страницы на своем сайте с помощью сервера GAE dev, но когда я развертываю обновленную версию, я получаю NPE на каждой странице. Я не вижу ошибок при развертывании. Ошибок перекомпиляции JSP нет.Отладка скомпилирована и развернута JSP в Google App Engine

Вот исключение пример:

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 еще не обновлен).

Есть ли способ взглянуть на скомпилированный JSP, который используется GAE?

+0

Итак, я удалил сервлет сервата (который больше не использовался) и обновился до 1.6.4, и все, кажется, работает ... Я не уверен, какая причина была. – Tristan

ответ

0
  1. Goto номер конкретной линии (25) из временных folder.I не уверен, где временная папка в 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 в /WEB-INF/lib папки вашего WebAPP и что файл JAR имеет различной servletcontainer марки/версии, чем servletcontainer, где вы на самом деле развертывание WAR.

Вы не должны включать в себя специфические библиотеки сервлетконтейнеров в /WEB-INF/lib. Удалите их все. Сервлетконтейнер - это тот, кто несет ответственность за их предоставление. /WEB-INF/lib должен содержать только специфичные для Webapp библиотеки. См. Также этот ответ для объяснения наиболее распространенной причины, по которой некоторые стартеры отбрасывают специфические библиотеки сервлетконтейнеров в /WEB-INF/lib без видимых причин: How do I import the javax.servlet API in my Eclipse project?

+0

Спасибо. Я считаю, что GAE обновил JSP api между 1.6.3 и 1.6.4, что сделало скомпилированные JSP, которые были загружены. – Tristan

0

Оказалось, что переключение на API GAE 1.6.4 устраняет проблему. Я думаю, что это могло быть вызвано загрузкой скомпилированного JSP с 1.6.3.

Смежные вопросы