Eclipse + Maven + JavaServer Faces -> ClassNotFoundException: StartupServletContextListener

Резюме

Когда я пытаюсь запустить приложение 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), он содержит следующее:

<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

проблема Мое (очень простое) приложение (страница входа и страница приветствия) больше не запускается. Когда я делаю следующее:

(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

Ответы на вопрос(2)

Ваш ответ на вопрос