我试图在ShrinkWrap的帮助下从我的应用程序创建WebArchieve。但即使我没有部署任何东西,只能使用:
final WebArchive archive = ShrinkWrap.create(WebArchive.class, "archieve.war");
archive.as(ShrinkWrapWebAppContext.class); // throws EXCEPTION!
的例外: 的
class“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.websocket 和 jetty.orbit 冲突中?
如果不是,如何解决我的问题?
如果是,如何解决冲突?
答案 0 :(得分:3)
我认为这与in this question描述的问题相同。
我修正了如下:
javax.servlet:servlet-api
org.eclipse.jetty.orbit:javax.servlet
的依赖关系,因此完全取代javax.servlet:servlet-api
有关此解决方案的完整说明,请参阅my answer on abovementioned question。
请注意,您可能希望在范围servlet-api
中包含(以较小者为准)provided
。 Apache专门针对“Servlet API”describes。