Embedded-Jetty和Maven中的ClassNotFound

时间:2012-09-14 21:46:27

标签: java jsp maven jetty

进行一些Surface-Tests我为JUnit-Tests启动一个嵌入式Jetty。我的测试从服务器调用一些页面。从eclipse做这个测试时一切正常,类路径是由“mvn eclipse:eclipse”创建的。

当使用“mvn test”运行这些测试时,jsp-Compiler会引发很多ClassNotFoundExceptions:javax.servlet。,javax.servlet.jsp并且会生成一些我自己生成的类。 servlet直接回答的所有请求都可以正常工作。

在我的测试用例中使用类似System.out.println(HttpServlet.class)的东西也可以正常工作。所以Jetty-JSP编译器在编译时似乎有些“特殊”。

有人知道如何说服Jetty编译我的JSP吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果你看pom of one jetty module,你会看到:

<dependency>
    <groupId>org.eclipse.jetty.orbit</groupId>
    <artifactId>javax.servlet</artifactId>
    <scope>provided</scope>
</dependency>

这取决于自己的servlet-api类。

因此,如果您在项目pom中指定对真实servlet-api的依赖,它可能会起作用:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
</dependency>

答案 2 :(得分:0)

毕竟问题似乎已经出现在mavens依赖管理中(或者我允许maven做的事情)。

我的类路径中有一堆javax-artifacts(jsp-2.1,2.2.3,2.2.1,servlet 2.5,3.0,3.0.glassfish-style)。所以在我清理了依赖项后,一切正常。现在我明白为什么来自maven-.build的码头没有启动。最后我不明白为什么所有的码头都出现在日食中;)