Метод getJspApplicationContext (ServletContext) undefined для типа JspFactory
Я работаю над проектом JSP, который использует Apache Tomcat 7.
При запуске проекта при его загрузке index.html это нормально, но при попытке перейти на другую страницу он показывает ошибку:
Метод getJspApplicationContext (ServletContext) undefined для типа JspFactory
Пожалуйста, предоставьте мне решение, чтобы избавиться от этого.
Ответы
Ответ 1
Избавьтесь от каких-либо библиотек, специфичных для сервлета, таких как jsp-api.jar
в вашей папке /WEB-INF/lib
. Это исключение указывает на то, что вы установили библиотеки, специфичные для сервлетаконтейнера, которые поддерживают только Servlet 2.4/JSP 2.0 или более старые (метод getJspApplicationContext()
был введен в Servlet 2.5/JSP 2.1). Это серьезная ошибка. Эти библиотеки не принадлежат к пути класса webapp.
Возможно, вы сделали это, чтобы преодолеть ошибки компиляции проекта, что действительно является довольно распространенной ошибкой начинающих. Это должно было быть решено по-разному, вы должны ссылаться на целевую среду выполнения в своем проекте, а не копировать в ваш проект некоторые библиотеки произвольного файла servletcontainer make/version. Это сделает ваш проект несовместимым с servletcontainers другого make и/или версии.
См. также:
Ответ 2
если у вас есть проект maven, попробуйте добавить следующую зависимость
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
Ответ 3
Вам нужно ссылаться на время выполнения сервера в вашем проекте.
В Eclipse:
- Выберите "Проект | Свойства | Путь сборки Java | вкладка" Библиотеки "
- Нажмите "Добавить библиотеку | Время выполнения сервера | Apache Tomcat 7"
- Нажмите "ОК".
- Очистите проект и снова его постройте ( "Проект | Очистить", затем "Проект | Создать все" )
Это должно сделать это!
Примечание. Подробнее об этой проблеме см. этот пост.