1

ShrinkWrap を使用して、アプリケーションから WebArchieve を作成しようとしました。しかし、何もデプロイしない場合でも、次を使用します。

final WebArchive archive = ShrinkWrap.create(WebArchive.class, "archieve.war");
archive.as(ShrinkWrapWebAppContext.class); // throws EXCEPTION!

例外:

クラス「javax.servlet.HttpConstraintElement」の署名者情報が、同じパッケージ内の他のクラスの署名者情報と一致しません

私がやろうとしたこと: 私が理解しているように、私は 2 つの jar を使用しています。どちらにも HttpConstraintElement が含まれています。これらの Maven 依存関係には 2 つの異なるバージョンがあります。だから私はしようとしました:

$ mvn dependency:tree -Dverbose |grep servlet
[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.2:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] |  +- org.apache.tiles:tiles-servlet-wildcard:jar:2.2.2:compile
[INFO] |  |  +- (org.apache.tiles:tiles-servlet:jar:2.2.2:compile - omitted for duplicate)
[INFO] |  |  +- (org.apache.tiles:tiles-servlet:jar:2.2.2:compile - omitted for duplicate)
[INFO] |  |  +- (org.apache.tiles:tiles-servlet:jar:2.2.2:compile - omitted for duplicate)
[INFO] +- org.apache.tiles:tiles-servlet:jar:2.2.2:compile
[INFO] |  +- (org.apache.tiles:tiles-servlet:jar:2.2.2:compile - omitted for duplicate)
[INFO]    \- org.eclipse.jetty:jetty-servlet:jar:9.0.0.M4:compile
[INFO]             +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile

質問:

それ(上記のmavenの結果)は、問題がjetty.websocketjetty.orbitの競合にあることを意味しますか?

いいえの場合、どうすれば問題を解決できますか?

はいの場合、競合を解決する方法は?

4

1 に答える 1

3

これは、この質問で説明されている問題と同じだと思います。

これを次のように修正しました。

  1. への依存を削除しますjavax.servlet:servlet-api
  2. への依存関係を明示的に追加するorg.eclipse.jetty.orbit:javax.servletため、完全に置き換えますjavax.servlet:servlet-api

このソリューションの完全な説明については、上記の質問に対する私の回答を参照してください。

servlet-apiscopeに (どちらでも) 含めたい場合があることに注意してくださいprovided。Apacheは、これを「サーブレットAPI」について具体的に説明しています。

于 2013-09-30T07:31:17.960 に答える