Страница Tomcat на localhost показывает HTTP 500, но я могу получить доступ к ‘sample’ war / приложению, но к другим – нет. Jenkins установлен.

Вопрос или проблема

Я пытаюсь правильно настроить свой сервер, чтобы запускать на нем сервлеты с помощью Jenkins. В папке webapps находятся два файла war. Один для Jenkins и один для примера от Apache. Оба работают нормально, но когда я пытаюсь получить доступ к localhost:8080, я получаю ошибку HTTP 500.

Я впервые обнаружил ошибку, когда пытался развернуть веб-приложение на Spring. Все попытки пока что потерпели неудачу, хотя если я запускаю веб-приложение на своем ноутбуке, оно работает нормально, так что я предполагаю, что файл war и само веб-приложение в порядке.

Есть ли вероятность, что предыдущие файлы war, которые я пытался развернуть, вызвали какую-то проблему?

На ноутбуке не установлен Jenkins – может быть, Jenkins вызывает проблему?

Я искал в различных сообщениях и пытался найти файл jar в других папках внутри директории webapp, но ничего не нашел. Затем я удалил все файлы war, кроме Jenkins. Jenkins загружается, но главная страница не отображается.

Спасибо за любую помощь.

Полное сообщение об ошибке:

HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
type Exception report

message java.lang.ClassCastException: org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.ClassCastException:      org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    root cause

   java.lang.ClassCastException: org.apache.jasper.runtime.ELContextImpl cannot be cast to     org.apache.jasper.el.ELContextImpl
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1023)
org.apache.jsp.index_jsp._jspService(index_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
 note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.

Когда я получил это сообщение, пытаясь развернуть веб-приложение (то, которое работает на ноутбуке), строка ошибки была там, где использовался jstl, но в данном случае веб-приложение больше не находится на сервере, и я просто пытаюсь получить доступ к localhost.

Развернутое приложение, вероятно, включило свою собственную версию jasper.jar. Удалите jasper.jar из директории /WEB-INF/lib приложения. См. https://stackoverflow.com/questions/12384779/org-apache-jasper-el-elcontextimpl-cannot-be-cast-to-org-apache-jasper-runtime-e для получения дополнительных деталей.

Ответ или решение

Почему возникает ошибка HTTP 500 на странице localhost Tomcat и как её исправить

Ошибка HTTP 500, которую вы получаете при попытке доступа к localhost:8080, указывает на внутреннюю ошибку сервера. Посмотрим на подробности проблемы и возможные решения.

Описание проблемы

Согласно вашему описанию, HTTP 500 возникает с сообщением об ошибке java.lang.ClassCastException: org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl. Эта ошибка связана с несовместимостью версий библиотек, используемых JSP (JavaServer Pages), и вероятнее всего, вызвана конфликтами между библиотеками Jasper, используемыми вашим приложением и библиотеками, находящимися в Tomcat.

Возможные причины проблемы:

  1. Конфликт версий Jasper: Возможно, что ваш веб-приложение (WAR файл) содержит свою версию jasper.jar и других связанных библиотек, которые конфликтуют с версиями, предоставляемыми Tomcat.

  2. Неосвобожденные ресурсы: При удалении WAR файлов предыдущие совместимые библиотеки могут остаться в каталоге WEB-INF/lib, что приведет к конфликтам.

  3. Установка Jenkins: Jenkins сам по себе не должен вызывать такую ошибку, но если он имеет конфликты с библиотеками, используемыми вашим приложением, это может быть связано.

Шаги для исправления ошибки

  1. Проверьте ваши WAR файлы: Убедитесь, что в ваших WAR файлах, включая Spring приложение, отсутствуют библиотеки, которые уже присутствуют в Tomcat. Особенно обратите внимание на следующие библиотеки:

    • jasper.jar
    • jsp-api.jar
    • servlet-api.jar

    Если они присутствуют в WEB-INF/lib, удалите их.

  2. Очистка старых развертываний: Убедитесь, что старые версии WAR файлов и (или) их артефакты в WEB-INF/lib удалены. Перезапустите Tomcat после удаления всех конфликтующих библиотек и WAR файлов, чтобы убедиться, что Tomcat перезагрузил актуальные библиотеки.

  3. Проверьте конфигурацию вашего проекта: Убедитесь, что ваш проект на Spring корректно настроен. Структура должен выглядеть как:

    /yourProject
      ├── src
      ├── WEB-INF
      │   ├── lib
      │   ├── web.xml
  4. Чистка и новое развертывание: Выполните сборку вашего WAR файла через Maven или Gradle с командой, которая очищает (clean) и создает (build) проект. Например, для Maven:

    mvn clean package
  5. Проверьте логи Tomcat: Зайдите в logs/catalina.out или logs/<дата>.log в каталоге установки Tomcat для получения дополнительной информации о том, что именно вызывает ошибку.

Заключение

Ошибки HTTP 500 могут быть вызваны множеством факторов, но наиболее вероятная причина в вашем случае – конфликт версий библиотек JSP и Jasper. Проверьте на наличие конфликтующих JAR файлов в ваших WAR файлах и выполните очистку сервера Tomcat. Эти шаги должны помочь вам устранить внутренние ошибки сервера и корректно развёртывать ваши приложения. Если проблемы сохраняются, проверьте соответствие версий Spring и JSP, так как несоответствие может также вызывать подобные ошибки.

Оцените материал
Добавить комментарий

Капча загружается...