Исключение, создаваемое в Tomcat при использовании JSF в Eclipse Dynamic Web Project - PullRequest
1 голос
/ 14 ноября 2011

Я пытаюсь настроить веб-проект в Eclipse (Indigo SR1) на MacOSX с помощью: Tomcat 7.0.22 JSF 2.0

Это динамический веб-проект, в который я добавил аспект проекта JSF.через свойства проекта.

При добавлении фасета проекта JSF я могу выбрать: Mojarra 2.0.3 или Apache MyFaces 2.0.2

Если я выберу Mojarra и попытаюсь запустить Tomcat(из Eclipse) я получаю следующее исключение:

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()

Если я выбираю MyFaces, я получаю следующее исключение:

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory

На основании других ответов здесь у меня нет jar: sдобавлено в папку WEB-INF / lib и в путь сборки проекта добавлены только библиотеки, включенные в Eclipse:

  • Apache Tomcat v7.0
  • EclipseLink 2.3.0
  • JSF 2.0 (Apache MyFaces JSF Core-2.0 API 2.0.2)
  • MySQL JDBC Driver

Сам проект минимален и содержит два xhtml-файла, но покабез бобов.

Есть идеи?

1 Ответ

0 голосов
/ 14 ноября 2011

Если я выбираю Мохарру и пытаюсь запустить Tomcat (из Eclipse), я получаю следующее исключение:

java.lang.LinkageError: нарушение ограничения загрузчика: когдаразрешающий метод интерфейса "javax.servlet.jsp.JspApplicationContext.getExpressionFactory ()

Это исключение говорит о том, что у вас есть файл JAR API / impl JAR другого контейнера / сервлет-контейнера контейнера / сервлета в другой версии пути веб-приложениякоторый конфликтует с JSP API самой целевой среды выполнения.


Если я выберу MyFaces, я получу следующее исключение:

java.lang.IllegalStateException: приложение не было должным образом инициализировано при запуске, не удалось найти Factory: javax.faces.application.ApplicationFactory

Это исключение предполагает, что у вас есть JAR-файл JSF impl другой JSF-модели / версиив другом месте в пути к классам во время выполнения веб-приложения, который конфликтует с JSF, фактически загружаемым.


Оба исключаяВсе сводится к тому, что путь к классам во время выполнения веб-приложения грязный.Помимо папки /WEB-INF/lib, которая, как вы сказали, пуста, Tomcat/lib, JRE/lib и JRE/lib/ext покрыты путем к классу времени выполнения веб-приложения.Вы должны убедиться, что вы не добавили туда любые JAR-файлы.Удалите их, если таковые имеются.Удалите / удалите / переустановите, если необходимо, Tomcat и / или JRE, чтобы быть в безопасности.Затем вы должны отсоединить их библиотеки, если вы действительно не понимаете, что делаете.

Я думаю , что у вас есть javaee.jar с сервера Glassfish где-то в пути к классам во время выполнения вашего веб-приложения.Это, по крайней мере, объясняет оба исключения, поскольку оно включает в себя как стандартный JSP API, так и Mojarra API.

...