java.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet,tomcat没有看到javaee-api-7.0-b83.jar

时间:2013-04-14 18:50:47

标签: maven tomcat java-ee classnotfoundexception

我正在尝试从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 /面/ greeting.xhtml

我得到了ClassNotFoundException。我在哪里可以获得面部教程所需的罐子列表?我该如何连接它们?

4 个答案:

答案 0 :(得分:4)

您不能将该Java EE jar放在Tomcat中,并期望它神奇地变身为Java EE服务器。

该特定jar仅包含要链接的API(例如,C / C ++术语中的“标题”)。它不包含任何实现。

最简单的方法是选择Tomcat并下载TomEE。 (可选)下载GlassFish。

这些都将包含您需要的所有功能,并且不必将任何内容放入WEB-INF / lib中。 (如果使用Maven将Java EE 6 GAV作为依赖项,并在您的pom中提供提供的)。

答案 1 :(得分:3)

如果您使用的是Maven项目,则可以通过添加以下依赖项来修复此错误:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.faces</artifactId>
    <version>2.2.7</version>
</dependency>

答案 2 :(得分:1)

除了Mike Braun的答案之外,网络资料的 Java EE 6 GAV是:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6</version>
    <scope>provided</scope>
</dependency>

具体说明范围:“提供”。这意味着您的Maven项目将链接到此,但它希望您的运行时具有实现。对于TomEE,GlassFish,JBoss AS 7.x等,确实如此。

答案 3 :(得分:0)

在你的类路径(.classpath)中,确保你有像

这样的条目
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>