Метод getJspApplicationContext (ServletContext) не определен для типа JspFactory. - PullRequest
9 голосов
/ 24 февраля 2010

Это то, что я получаю на экране браузера, когда пытаюсь запустить файл JSP.

Метод getJspApplicationContext (ServletContext) не определен для типа JspFactory

StackTrace:

org.apache.jasper.compiler.DefaultErrorHandler.javacError (DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError (ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass (JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile (Compiler.java:334) org.apache.jasper.compiler.Compiler.compile (Compiler.java:312) org.apache.jasper.compiler.Compiler.compile (Compiler.java:299) org.apache.jasper.JspCompilationContext.compile (JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:267) javax.servlet.http.HttpServlet.service (HttpServlet.java:856)

И исключение яшмы выдается в окне Tomcat, когда я его запускаю.

Ответы [ 4 ]

31 голосов
/ 24 февраля 2010

Метод getJspApplicationContext (ServletContext) не определен для типа JspFactory

Этот метод был введен в JSP 2.1. Есть 3 причины этой проблемы:

  1. Вы используете слишком старую версию контейнера JSP (вам нужно, например, как минимум Tomcat 6.0 ).

  2. Вы указали неверную версию сервлета в web.xml. JSP 2.1 идет рука об руку с Servlet 2.5, поэтому ваш web.xml должен быть хотя бы объявлен в соответствии со спецификацией Servlet 2.5 (для этого вам все еще нужен Servlet 2.5 / JSP 2.1-совместимый сервлет-контейнер).

  3. Вы дублировали более старые версии библиотек приложений, специфичных для сервера приложений, в /WEB-INF/lib веб-приложения, например servlet-api.jar, jsp-api.jar и так далее. Вы должны никогда делать это. Это приведет только к конфликтам загрузки классов. Избавьтесь от них в своем веб-проекте и оставьте / отмените их там на сервере приложений.

4 голосов
/ 16 сентября 2014
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>${servlet.version}</version>
   <scope>provided</scope>
</dependency> 

также исправляет проблемы

1 голос
/ 07 октября 2015

Для Maven мне также пришлось добавить зависимость jsp-api в качестве предоставленного jar, например так: (Какая-то другая зависимость вытягивала его, я никогда не мог понять, какая именно, но это исправило это)

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>   
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
  <scope>provided</scope>
</dependency>     
1 голос
/ 07 декабря 2012

Метод getJspApplicationContext (ServletContext) не определен для тип JspFactory

Это также может произойти, когда вашему проекту требуется ссылка на среду выполнения сервера:

  • Щелкните правой кнопкой мыши по вашему проекту в Eclipse "Project Explorer"
  • Выберите «Путь сборки | Настроить путь сборки»
  • Нажмите на вкладку "Библиотеки"
  • Нажмите «Добавить библиотеку»
  • Выберите «Server Runtime» и нажмите «Next»
  • Выберите «Apache Tomcat 7» или любую другую версию вашего сервера.

Примечание. Эта ошибка также может возникать для сборок ANT, и в этом случае вам нужно сослаться на целевую среду выполнения в файле ANT build.xml ... Далее приведена ссылка на локальную установку tomcat и используется ее "lib" папки при выполнении компиляции:

<project name="tomcat-demo" default="compile" basedir=".">
    <property name="tomcat-home" value="/path/to/your/tomcat/apache-tomcat-7" />

    <path id="project-classpath">
        <fileset dir="WebContent/WEB-INF/lib" includes="*.jar" />
        <fileset dir="${tomcat-home}/bin" includes="*.jar" />
        <fileset dir="${tomcat-home}/common/lib" includes="*.jar" />
        <fileset dir="${tomcat-home}/server/lib" includes="*.jar" />
    </path>
   ...
</project>

Выделено из этого URL :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...