0

いくつかの表面テストを行うために、JUnit テスト用の埋め込み Jetty を開始します。私のテストは、サーバーからいくつかのページを呼び出します。Eclipse からこのテストを実行すると、すべて正常に動作し、クラスパスは "mvn eclipse:eclipse" によって作成されます。

これらのテストを「mvn test」で実行すると、jsp-Compiler は多くの ClassNotFoundExceptions を発生させます: javax.servlet.、javax.servlet.jsp、およびいくつかの自己生成クラスです。サーブレットが直接応答するすべてのリクエストは正常に機能します。

私のテストケースで System.out.println(HttpServlet.class) のようなことをしてもうまくいきます。そのため、Jetty-JSP コンパイラは、コンパイル時にいくつかの「特別な機能」を持っているようです。

Jetty に私の JSP をコンパイルさせる方法を知っている人はいますか?

4

3 に答える 3

0

結局のところ、問題はMavenの依存関係管理(またはMavenに許可したこと)にあるようです。

クラスパス(jsp-2.1、2.2.3、2.2.1、サーブレット2.5、3.0、3.0.glassfish-style)にjavax-artifactsが本当に混乱していました。したがって、依存関係をクリーンアップした後、すべてが正常に機能します。これで、maven-.buildのjettyが起動しなかった理由がわかりました。最後に、なぜ突堤が日食に現れたのか理解できません;)

于 2012-09-18T13:10:25.970 に答える
0

そのためのmavenプラグインがあります:

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

于 2012-09-15T02:16:34.223 に答える
0

1 つの jetty モジュールの 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 に答える