我搜索了许多类似的帖子,但是我找不到关于构建和部署 JSF 应用程序的正确方法的明确答案,因此我希望有人能提供帮助......
目前我正在使用 Eclipse 和 Maven 构建一个简单的 JSF 应用程序并将其部署到 Tomcat 7 上,在 POM.xml 中有一个依赖项:
<dependency>
<groupid>javax</groupid>
<artifactid>javaee-api</artifactid>
<version>6.0</version>
</dependency>
当我部署到服务器上时,我得到:
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
我不知道这是从哪里来的?我没有在 web.xml 中定义侦听器。
如果我将依赖项更改为:
<dependency>
<groupid>javax</groupid>
<artifactid>javaee-api</artifactid>
<version>6.0</version>
<scope>provided</provided>
</dependency>
并尝试在我得到的服务器上运行应用程序:
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
我可以理解,因为我现在使用提供的范围,因此它希望 Tomcat 有实现但它找不到它。
最后,如果我将 javax.faces.2.1.13.jar 放入 tomcat install dir/lib 文件夹,它工作正常。
使用 Maven 依赖项导入的 javaee-api-6.0.jar 似乎包含与 javax.faces.2.1.13.jar 相同的 javax.faces.* 类,因此任何人都可以告诉我为什么当我尝试时这不起作用并在没有提供范围的情况下在服务器上运行应用程序?
虽然它在 tomcat 安装目录/lib 文件夹中有 javax.faces.2.1.13.jar 时有效,但这是部署 Faces 应用程序的正确方法吗?