我正在构建一个使用JSF的PoC,并使用Tomcat 7.0.59
作为我的服务器。我的pom.xml
看起来像是:
<repositories>
<repository>
<id>Java.Net</id>
<url>http://download.java.net/maven/2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
我查找了错误并发现它是由javaee-api
引起的,但看起来甚至在添加了特定的依赖项之后问题仍无法解决。有一个不同的线程,但它在不同的服务器上,如glassfish,jboss,似乎不适用于我的情况。
编辑:在Samuel和Tiny的建议之后,我已经达到了这个pom.xml:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
maven依赖树看起来像:
com.Sourabh:SourabhTest:war:0.1
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- javax.faces:jsf-api:jar:2.1:compile
[INFO] \- com.sun.faces:jsf-impl:jar:2.1.7:compile
答案 0 :(得分:0)
Servlet-api必须用<scope>provided</scope>
标记,作为tomcat提供的jar。如果你不这样做,你可能会遇到类加载器问题。
为确保您没有多次使用相同的依赖项(通过传递dep。),您可以运行mvn dependency:tree
或进入eclipse中的依赖关系层次结构插件