我从here签出Mojarra JSF 2.0 helloworld示例(只需输入guest作为用户名)。
我将其作为maven项目导入到带有tomcat 6服务器的Eclipse(v 3.5)中。我具有在servlet容器中运行JSF 2.0的mojarra依赖关系。
当我打包它时,由于jsf依赖项具有编译范围,因此这些jar已在WEB-INF / lib中。然后我将其部署到一个新的tomcat实例中,它可以正常工作而不会抱怨ClassNotFoundException。
我的问题是,如果不将这些jar放入eclipse的tomcat实例,就无法在eclipse中运行项目。
我做错了什么吗?
最佳答案
我具有在servlet容器中运行JSF 2.0的mojarra依赖关系。
您是说您按照注释中的建议修改了所提供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
should also work。您正在使用m2eclipse对吗?但是当部署到另一个tomcat实例(没有mojarra jar)时,它可以正常工作。
您是指在Eclipse之外吗?并且没有将Mojarra罐子放在Tomcat的lib文件夹中?