java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet, tomcat doesn't see javaee-api-7.0-b83.jar
我正在尝试从Java EE教程中运行示例guessnumber-jsf。 它在这里:https://svn.java.net/svn/javaeetutorial~svn
pom.xml中没有依赖项。 因此输出文件没有.jar文件。 当我尝试将javaee-api-7.0-b83.jar放入tomcat / lib或WEB-INF / lib / javaee-api-7.0-b83.jar时,没有任何变化。
当我尝试打开
本地主机:8080 / guessnumber-jsf / faces / greeting.xhtml
我得到ClassNotFoundException。 在哪里可以获取面部教程所需的罐子列表? 如何连接它们?
你不能把在Tomcat的Java EE的罐子,并期望它神奇地变身成为Java EE服务器。
该特定的jar仅包含要链接的API(例如,C / C ++术语中的"标头")。它不包含任何实现。
最简单的方法是放入Tomcat,然后下载TomEE。 (可选)下载GlassFish。
这些都已经包含了您需要的所有功能,并且无需在WEB-INF / lib中放入任何内容。 (如果使用Maven,则将Java EE 6 GAV作为pom中提供的范围的依赖项)。
如果您使用的是Maven项目,则可以通过添加以下依赖项来解决此错误:
1 2 3 4 5 | <dependency> <groupId>org.glassfish</groupId> javax.faces</artifactId> <version>2.2.7</version> </dependency> |
除了Mike Braun的答案之外,用于Web配置文件的Java EE 6 GAV还包括:
1 2 3 4 5 6 | <dependency> <groupId>javax</groupId> javaee-web-api</artifactId> <version>6</version> <scope>provided</scope> </dependency> |
特别注意范围:"提供"。这意味着您的Maven项目将对此进行链接,但是它希望您的运行时具有实现。对于TomEE,GlassFish的,JBoss AS中7.x的,这等事实确实如此。
在您的类路径(.classpath)中,确保您输入如下内容
1 |