ClassNotFound in Embedded-Jetty and Maven



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

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

在我的测试用例中做一些像System.out.println(HttpServlet.class)这样的事情也可以正常工作。因此,Jetty-JSP编译器在编译时似乎有一些"特殊"。

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

有一个 maven 插件:

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

如果你看一个码头模块的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>

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

我的类路径中有一堆 javax 工件(jsp-2.1、2.2.3、2.2.1、servlet 2.5、3.0、3.0.glassfish 风格)。因此,在我清理依赖项后,一切正常。现在我明白为什么 maven-.build 的码头没有开始了。最后我不明白为什么码头会出现日食;)

最新更新