Сводка
Когда я пытаюсь запустить приложение JSF 2.0 из Eclipse (в Tomcat 7.0), я получаю следующее исключение:
Problem: SEVERE: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener
Подробности
Я учусь разрабатывать приложения JSF, используя Eclipse.Я начал с предварительно настроенного проекта Eclipse: File-> New-> Dynamic Web Project-> JavaServer Face v2.0 Project.Используя этот метод, Eclipse предоставляет все зависимости.Но я хочу по-настоящему узнать, как все работает.Я хочу удалить «магию», поэтому я преобразовал свой проект в проект Maven: Configure-> Convert to Maven project.
Затем я создал свой pom.xml (на основе http://myfaces.apache.org/build-tools/archetypes/myfaces-archetype-helloworld20/index.html), itсодержит следующее:
<build>
<finalName>jsf-facelets-tutorial</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
Но поскольку я незнаком с JSF и поскольку это Eclipse «Динамический веб-проект», структура проекта для меня нова, и у меня возникают проблемы с пониманием того, какие зависимостипроисходят из Maven и предоставляются Eclipse «магией».
В Eclipse моя структура проекта выглядит следующим образом:
ProjectName
JAX-WS Web Services <-- CAN I REMOVE THIS???
Deployment Descriptor
Java Resources
src/main
Libraries
Apache Tomcat v7.0
el-api.jar
jsp-api.jar
[more...]
JSF 2.0 (Apache MyFaces JSF Core-2.0 API 2.0.2) <-- I REMOVED THIS!!!
EAR Libraries
JRE System Library
Maven Dependencies
el-api-1.0.jar
myfaces-api-2.0.5.jar
myfaces-impl-2.0.5.jar
[more...]
Web App Libraries
Задача Моя (оченьbasic) приложение (страница входа и страница приветствия) больше не запускается. Когда я делаю следующее:
(1) Right click on WebContent/login.xhtml
(2) Run as -> Run on Server
(3) Apache Tomcat v7.0 - JDK6 at localhost
, я получаю исключение:
Problem: SEVERE: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener
У меня такое ощущение, что этоочень легко исправить, но я слишком незнаком с этими фреймворками, чтобы разобраться с этим.
Если есть какие-либо дополнительные сведения, которые я должен предоставить (web.xml, Face-config-xml, login.xhtml),дайте мне знать, и я добавлю их.
Спасибо!
РЕДАКТИРОВАТЬ
WEB-INF / lib всегда пуст.Насколько я понимаю, необходимо скопировать в эту папку все зависимости, которые потребуются во время выполнения и которые не предоставляются веб-контейнером.Мои причины пустые: (1) я не знаю, что мне нужно там (2) я не знаю, как автоматизировать процесс добавления туда файлов .jar