jsf 2 и maven с eclipse запускаются на сервере

Я проверяю образец приветствия Mojarra JSF 2.0 из здесь (просто введите гость в качестве имени пользователя). Я импортирую его как проект maven в eclipse (v 3.5) с сервером tomcat 6. У меня есть зависимости mojarra для запуска JSF 2.0 внутри контейнера сервлета.

Когда я упаковываю его и поскольку у зависимостей jsf есть область компиляции, эти jar уже находятся в WEB-INF/lib. Затем я развертываю его в новом экземпляре tomcat, он работает без жалоб на ClassNotFoundException.

Моя проблема в том, что я не могу запустить проект в eclipse, не помещая эти банки в экземпляр eclipse tomcat.

Есть ли что-то, что я сделал неправильно?


person robinmag    schedule 03.08.2010    source источник


Ответы (2)


У меня есть зависимости mojarra для запуска JSF 2.0 внутри контейнера сервлета.

Вы имеете в виду, что вы изменили зависимости предоставленного pom, как это было предложено в комментариях:

<dependencies>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>

    <!--
      Uncomment these dependencies and comment out the one above to use
      a simple servlet container instead of a Java EE Application Server
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>[2.0.1,)</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>[2.0.1,)</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
     <dependency>
         <groupId>javax.servlet.jsp.jstl</groupId>
         <artifactId>jstl-api</artifactId>
         <version>1.2</version>
     </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jstl-impl</artifactId>
        <version>1.2</version>
    </dependency>
    -->

</dependencies>

Вы можете это подтвердить? На самом деле, показ модифицированного pom может помочь.

Когда я использую «запустить на сервере», он всегда говорит «Не удается найти javax.faces.web.FacesServlet

Я думаю, вы имели в виду javax.faces.webapp.FacesServlet. Это определенно в jsf-api.jar. И поместить jsf-api.jar и jsf-impl.jar в WEB-INF/lib также должно работать. Вы используете m2eclipse правильно?

Но при развертывании на другом экземпляре tomcat (без банок мохарры) он работает нормально.

Вы имеете в виду за пределами Eclipse? И не помещая банки Mojarra в папку lib Tomcat?

person Pascal Thivent    schedule 03.08.2010
comment
Да, я раскомментирую эти зависимости. Но чтобы запустить его внутри eclipe, мне нужно поместить банку mojarra в папку tomcat lib. Когда я упаковываю его и поскольку у зависимостей jsf есть область компиляции, эти jar уже находятся в WEB-INF/lib. Затем я развертываю его в новом экземпляре tomcat, он работает без жалоб на ClassNotFoundException. Моя проблема в том, что я не могу запустить проект в eclipse, не помещая эти банки в экземпляр eclipse tomcat. - person robinmag; 03.08.2010
comment
@robinmag: попробую воспроизвести позже. Звучит странно. - person Pascal Thivent; 03.08.2010

Я решил это. Это проблема пути к классам maven, а не JSF.

Если кто-то столкнется с этим, просто щелкните правой кнопкой мыши свой проект, затем выберите «Зависимости модуля Java EE», затем убедитесь, что отмечены «зависимости Maven». Перезагрузите сервер, возможно, вам также придется перезагрузить проект (закрыть и снова открыть).

Надеюсь, что поможет.

person robinmag    schedule 03.08.2010
comment
Я бы назвал это не проблемой пути к классам Maven, а проблемой, связанной с неправильной конфигурацией Eclipse: если вы хотите, чтобы Maven управлял зависимостями вашего проекта, ваш проект Eclipse должен быть правильно настроен... Лично я предпочитаете создавать проекты Maven в командной строке, а затем использовать Импорт... › Существующие проекты Maven. Просто работает, никаких сюрпризов. - person Pascal Thivent; 04.08.2010