2013-09-17 4 views
1

Я попытался создать WebArchieve из своего приложения с помощью ShrinkWrap. Но даже если я ничего, кроме использования не разворачивать:HttpConstraintElement: конфликт зависимости maven

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

Исключение:

класс «javax.servlet.HttpConstraintElement» 's информация подписывающий не соответствует информации подписавшего других классов в том же пакете

То, что я пытался сделать: Насколько я понимаю, я использую две банки, оба содержат 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 конфликта?

Если нет, то как решить мою проблему?

Если да, то как разрешить конфликт?

+1

Возможно, похоже на [этот вопрос] (http://stackoverflow.com/questions/11084871/exclude-servlet-api-from-test-scope-maven). Есть некоторые полезные ответы, если можно так сказать :) –

ответ

3

Я считаю, что это та самая проблема, как описано in this question.

Я установил это следующим образом:

  1. Удалите зависимость от javax.servlet:servlet-api
  2. Явное добавить зависимость от org.eclipse.jetty.orbit:javax.servlet, следовательно, полностью заменив javax.servlet:servlet-api

Для полного объяснения этого решения вы, возможно, см. my answer on abovementioned question.

Обратите внимание, что вы можете включить (в зависимости от того) servlet-api по области provided. Apache конкретно describes это для «Servlet API».

Смежные вопросы