2011-05-13 78 views
0

Maven依賴關係存在問題。使用maven在jboss6上部署JSP/Servlet項目時出錯

您好所有,

這是參考我先前的職位 Error with Jboss while deploying a jsp/servlet web app "com.sun.faces.config.ConfigureListener" Error

如果我不通過Maven構建和項目導出爲戰爭(我使用Eclipse進行J2EE),並部署到Jboss6通過它的管理控制檯它運行良好,而如果我通過maven使用mvn乾淨安裝構建並複製由maven構建的戰爭到我的/ deploy目錄(Jboss)我得到以下錯誤

2011-05-10 14:41 :57,509 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment](HDScanner)deploy,ctx Path =/UltimateSMS-1 2011-05-10 14:41:57,681錯誤[org.apache.catalina.core.ContainerBase。[jboss.web]。[localhost]。[/ UltimateSMS-1]](HDScanner)錯誤配置com.sun.faces.config.ConfigureListener類的應用程序偵聽器:java.lang.ClassNotFoundException:com.sun.faces.config.ConfigureListener at java.net.URLClassLoader $ 1.run(URLClassLoader.java:217)[:1.6 .0_20] 在java.security.AccessController.doPrivileged(本機方法)[:1.6.0_20] 在java.net.URLClassLoader.findClass(URLClassLoader.java:205)[:1.6.0_20]

而戰爭的部署失敗。

我的繼承人聚甲醛的部分

<dependency> 
        <groupId>javax.servlet</groupId> 
        <artifactId>servlet-api</artifactId> 
        <version>2.5</version> 
        <type>jar</type> 
        <scope>compile</scope> 
      </dependency> 
      <dependency> 
        <groupId>jboss</groupId> 
        <artifactId>jboss-j2ee</artifactId> 
        <version>4.0.2</version> 
        <type>jar</type> 
        <scope>compile</scope> 
      </dependency> 
    <dependency> 
        <groupId>javax</groupId> 
        <artifactId>javaee-web-api</artifactId> 
        <version>6.0</version> 
      </dependency> 

沒有在那裏我的web.xml中已經配置的一個面孔偵聽器,亙古不變的有JSF

任何引用

PS:我的項目是一個簡單的JSP /有到JSF沒有提及什麼那麼 我使用JDK 1.6和Maven Servlet的J2EE項目 - >阿帕奇Maven的3.0.3
我縮小了錯誤,我認爲這個問題是在我的pom.xml

請指教。 謝謝

回答

4

我遇到過同樣的問題。你應該在pom.xml取代:

<dependency> 
       <groupId>javax.servlet</groupId> 
       <artifactId>servlet-api</artifactId> 
       <version>2.5</version> 
       <type>jar</type> 
       <scope>compile</scope> 
    </dependency> 

和:

<dependency> 
       <groupId>javax</groupId> 
       <artifactId>javaee-web-api</artifactId> 
       <version>6.0</version> 
    </dependency> 

由:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 

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

根據maven doc你應該設置在Servlet API的依賴和相關的Java EE的API範圍提供,因爲Web容器提供這些類。

提供 這非常類似於編譯,但表示您希望JDK或容器在運行時提供依賴關係。例如,在爲Java Enterprise Edition構建Web應用程序時,您可以將Servlet API和相關Java EE API的依賴性設置爲範圍,因爲Web容器提供了這些類。此範圍僅在編譯和測試類路徑中可用,且不是傳遞性的。