2010-08-03 58 views
1

我檢查了從here Mojarra JSF 2.0 helloworld樣本(只需輸入guest作爲用戶名)。 我將它作爲maven項目導入到eclipse(v 3.5)中,並帶有一個tomcat 6服務器。我有用於在servlet容器內運行JSF 2.0的mojarra依賴項。jsf 2和maven與日食「在服務器上運行」

當我打包它,並且因爲jsf依賴項有編譯範圍,這些jar已經在WEB-INF/lib中。然後我將它部署到一個新的tomcat實例中,它的工作原理沒有抱怨ClassNotFoundException。

我的問題是我不能在eclipse中運行項目,而無需將這些jar放到eclipse的tomcat實例中。

有什麼我做錯了嗎?

回答

1

我有在servlet容器中運行JSF 2.0的mojarra依賴關係。

你的意思是你修改所提供的聚甲醛的依賴作爲意見建議:

<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可能會有所幫助。

當我使用「在服務器上運行」總是說「不能在jsf-api.jar發現javax.faces.web.FacesServlet

我猜你的意思javax.faces.webapp.FacesServlet,它肯定是,而且將jsf-api.jarjsf-impl.jarWEB-INF/libshould also work。您正在使用m2eclipse嗎?

但是當部署到另一個tomcat實例(沒有mojarra罐子)時它可以正常工作

你的意思是在Eclipse之外?沒有把Mojarra罐子放在Tomcat的lib文件夾中?

+0

是的,我取消註釋這些依賴關係。但爲了在eclipe中運行它,我必須將mojarra jar放入tomcat lib文件夾中。 當我打包它,並且因爲jsf依賴項具有編譯範圍,這些jar已經在WEB-INF/lib中。然後我將它部署到一個新的tomcat實例中,它的工作原理沒有抱怨ClassNotFoundException。 我的問題是我不能在eclipse中運行項目,而無需將這些jar放到eclipse的tomcat實例中。 – robinmag 2010-08-03 09:38:48

+1

@robinmag:我會稍後再試。聽起來怪怪的。 – 2010-08-03 09:53:30

+0

@robinmag:無法重現... – 2010-08-04 02:50:31

0

我解決了它。它不是來自JSF的maven classpath問題。

如果有人遇到這種情況,只需右鍵單擊您的項目,然後選擇「Java EE Module dependencies」,然後確保選中「Maven dependencies」。重新啓動服務器,也許你必須重新加載你的項目(關閉並重新打開)。

希望有所幫助。

+1

我不會稱之爲* Maven類路徑問題*,但是與Eclipse配置錯誤相關的問題:如果您希望讓Maven管理您的項目依賴關係,那麼您的Eclipse項目需要正確配置...就個人而言,我更喜歡在命令行上創建Maven項目,然後使用** Import ...>現有的Maven項目**。它只是有用,沒有驚喜。 – 2010-08-04 03:09:07