1

我尝试在 ShrinkWrap 的帮助下从我的应用程序创建 WebArchieve。但即使我不部署任何东西,但使用:

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

例外:

类“javax.servlet.HttpConstraintElement”的签名者信息与同一包中其他类的签名者信息不匹配

我试图做的事情: 据我所知,我使用了两个罐子,都包含 HttpConstraintElement。而这些 Maven 依赖项有两个不同的版本。所以我试图:

$ 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-api在 scope中包含(无论哪个) provided。Apache 专门为“Servlet API”描述了这一点。

于 2013-09-30T07:31:17.960 回答