2013-04-14 25 views
4

我想從Java EE教程運行示例guessnumber-jsf。它在這裏:https://svn.java.net/svn/javaeetutorial~svnjava.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet,tomcat沒有看到javaee-api-7.0-b83.jar

pom.xml中沒有依賴關係。所以輸出文件沒有.jar文件。當我嘗試在tomcat/lib或WEB-INF/lib/javaee-api-7.0-b83.jar中放入javaee-api-7.0-b83.jar時,沒有任何更改。

當我嘗試打開

本地主機:8080/guessnumber的JSF /面/ greeting.xhtml

我得到的ClassNotFoundException。我在哪裏可以得到我需要面部教程的罐子清單?我如何連接它們?

+1

爲什麼您覺得有必要使用術語 「J2EE」,而教程甚至URL都清楚地說明了「Java EE」? –

回答

4

您不能將該Java EE jar放入Tomcat中,並期望它能奇蹟般地變身爲Java EE服務器。

該特定jar只包含要鏈接的API(例如C/C++術語中的「標題」)。它不包含任何實現。

最簡單的事情就是改用Tomcat並下載TomEE。可以選擇下載GlassFish。

這些將全部包含您需要的所有功能,並且不需要將任何內容放入WEB-INF/lib中。 (如果使用Maven將Java EE 6 GAV作爲依賴項,範圍在您的pom中提供了)。

+0

我如何添加j2ee 6 gav依賴?你能更具體一點嗎? Thanx –

1

添加到邁克·布朗,在的Java EE 6 GAV爲Web配置文件的答案:

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

特別注意的範圍: 「規定」。這意味着您的Maven項目將與此鏈接,但它期望您的運行時具有實現。對於TomEE,GlassFish,JBoss AS 7.x等,確實如此。

+0

Thanx的評論。 –

0

在類路徑中(的.classpath),請確保你有一個像

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
3

輸入如果您使用的是Maven項目,你可以通過添加以下的依賴修正這個錯誤:

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