Метод 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

Другие вопросы по тегам