2011-05-13 80 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容器提供了这些类。此范围仅在编译和测试类路径中可用,且不是传递性的。