我在尝试不在运行 junit 测试的类路径中包含 javax.servlet-api 时找到了解决方案。实际上,我将 servlet-api 移到了类路径中 jar 的最末端,然后启示来了……
我使用了错误版本的 servlet-api。我使用的是 2.5,但需要 3.0。Maven 范围我选择“提供”。适用于在 eclipse 中运行 junit 和“mvn test”执行。
不过,我不明白为什么没有冲突。如果我做对了,即使是“提供的”依赖项也会在测试时暴露在类路径中,所以可能会发生冲突 - 或者,当然 - 如果我完全命中了用于编译的 servlet-api 和码头的正确版本servlet-api 则没有冲突。
无论如何,它对我有用。
这是我的依赖项/* pom-setup for jetty + servlet api:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.4.v20120524</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>8.1.4.v20120524</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>8.1.4.v20120524</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>8.1.4.v20120524</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>