0

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

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

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

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

4

3 回答 3

0

有一个 Maven 插件:

http://wiki.eclipse.org/Jetty/Feature/Jetty_Jspc_Maven_Plugin

于 2012-09-15T02:16:34.223 回答
0

如果您查看一个码头模块的 pom,您会看到:

<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>
于 2012-09-15T07:22:58.853 回答
0

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

我的类路径中有很多 javax 工件(jsp-2.1、2.2.3、2.2.1、servlet 2.5、3.0、3.0.glassfish 样式)。因此,在我清理了依赖项之后,一切正常。现在我明白了为什么来自 maven-.build 的码头没有启动。最后我不明白为什么码头出现在日食中;)

于 2012-09-18T13:10:25.970 回答