java.lang.ClassCastException не может быть приведено к javax.servlet.ServletException
-
19-09-2019 - |
Вопрос
Я пытаюсь развернуть java-приложение в appspot (Google appengine).Я новичок в Java, так что потерпите меня.Когда я запускаю приложение локально из eclipse, оно работает нормально.После загрузки его в Google appspot я получаю сообщение об ошибке (только на одной из страниц .jsp, другие страницы .jsp работают нормально).В журнале ошибок написано:
Uncaught exception from servlet
java.lang.ClassCastException: java.lang.ClassCastException cannot be cast to javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:754)
Кто-нибудь может пролить некоторый свет на этот вопрос?Что может быть не так на этой конкретной странице?Если вы хотите увидеть код страницы, дайте мне знать.
Решение
Похоже, что что-то в вашем коде генерирует исключение, которое не является производным от ServletException
.Обработчик, находящийся выше по потоку, улавливает это исключение и (возможно) пытается сделать с ним что-то разумное.
Вероятно, существует другая основная проблема, из-за которой в первую очередь возникает исключение, но это можно выявить, если сначала посмотреть, что это за исключение.
Если вы не уверены, где находится это исключение, попробуйте обернуть весь обработчик страницы в try
... catch
блок, ищущий все Throwable
's.Когда вы найдете один из них, повторно поместите его внутрь ServletException
:
try {
// handle page request
} catch (Throwable t) {
throw new ServletException(t);
}
Это должно позволить веб-серверу отобразить исключение, чтобы вы могли продолжить отслеживание проблемы.Обратите внимание, что это, вероятно, должен быть временный код.
Другие советы
Найдите экземпляры javax.servlet.ServletException.class в вашей WEB-INF/lib.Содержимое для servler.jar или servlet.api.jar должно предоставляться в контейнере и не должно отображаться в вашем файле WAR.