Метод getJspApplicationContext(ServletContext) не определен для типа JspFactory.
Я работаю над проектом JSP, который использует Apache Tomcat 7.
При запуске проекта с загрузкой index.html все в порядке, но при попытке перейти на другую страницу отображается ошибка:
Метод getJspApplicationContext(ServletContext) не определен для типа JspFactory.
Пожалуйста, дайте мне решение, чтобы избавиться от этого.
5 ответов
Избавьтесь от любых специфичных для servletcontainer библиотек, таких как jsp-api.jar
в вашем /WEB-INF/lib
папка. Это исключение означает, что вы поместили в него библиотеки, специфичные для servletcontainer, контейнера, который поддерживает только Servlet 2.4 / JSP 2.0 или более раннюю версию (getJspApplicationContext()
метод был введен в Servlet 2.5 / JSP 2.1). Это большая ошибка. Эти библиотеки не входят в путь к классам веб-приложения.
Возможно, вы сделали это, чтобы преодолеть ошибки компиляции проекта, что действительно является довольно распространенной ошибкой новичка. Это должно быть решено по-другому, вы должны ссылаться на целевую среду выполнения в вашем проекте, а не копировать некоторые библиотеки произвольной сборки / версии контейнера сервлетов в ваш проект. Это сделало бы ваш проект несовместимым с сервлет-контейнерами другой марки и / или версии.
Смотрите также:
Если у вас есть проект maven, попробуйте добавить следующую зависимость
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
Вы должны ссылаться на время выполнения сервера в вашем проекте.
В Затмении:
- Выберите "Проект | Свойства | Путь сборки Java | Вкладка" Библиотеки ""
- Нажмите "Добавить библиотеку | Среда выполнения сервера | Apache Tomcat 7"
- Нажмите ОК.
- Очистите ваш проект и соберите его снова ("Проект | Очистить", затем "Проект | Построить все")
Это должно сделать это!
Примечание: см. Этот пост переполнения стека для более подробной информации об этой проблеме
I am using Tomcat v8.0.
This did not help:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
I checked all the runtime configurations and they all look fine.
The jsp page does not load, but downloads a text file.
У меня была аналогичная ошибка при работе с проектом с открытым исходным кодом с использованием eclipse, проблема была с моей версией tomcat. Я использовал tomcat версии 6. Мне пришлось настроить сервер с помощью tomcat версии 8, чтобы решить эту проблему.
эта ссылка была полезна Невозможно скомпилировать класс для JSP