2013-03-25 3 views
1

Я устанавливаю Arquillian в проекте, который использует сварку CDI и JPA, и я пытаюсь использовать встроенный контейнер GlassFish (я читал, что встроенный контейнер Weld не поддерживает JPA).ошибка нескольких контейнеров в Arquillian

Я добавил GlassFishContainer в свой pom.xml, но я получаю сообщение об ошибке при запуске тестовых примеров. Здесь id сообщение об ошибке:

Multiple service implementations found for interface 
org.jboss.arquillian.container.spi.client.container.DeployableContainer. 
org.jboss.arquillian.container.glassfish.embedded_3_1.GlassFishContainer,  
org.jboss.arquillian.container.weld.ee.embedded_1_1.WeldEEMockContainer 

Похоже, что у меня есть как встроенный контейнер Weld, так и стеклоFilsh. Я дважды проверил свой pom.xml, у меня только что встроенная стеклянная рыба. Я не мог найти никаких признаков встроенного контейнера Weld. Есть идеи?!

+0

Возможно, вы захотите запустить 'mvn dependency: tree', чтобы увидеть, что приводит к вложению адаптера контейнера Weld-EE в ваш путь к классам. Я подозреваю, что у вас одновременно есть два профиля, но они также могут быть транзитивными зависимостями. –

+0

Согласовано. У вас может быть только один контейнер на пути к классу сборки. Также возможно, что вы не используете профили, но вместо этого просто втягиваете обе зависимости. –

ответ

0

Удалить один из контейнеров из локального хранилища maven. Расположение по умолчанию для локального репозитория maven: $HOME/.m2/repository/.

Попробуйте удалить org/jboss/arquillian/container/glassfish.embedded_3_1, если вы хотите запустить свои тесты с помощью Weld Embedded Server, иначе удалите org/jboss/arquillian/container/weld.ee.embedded_1_1.

Причина в том, что оба Jars реализуют один и тот же интерфейс и arquillian не могут решить, какой из них использовать.

+0

Даже удаление '~/.m2/repository /' в моем случае не помогло. Я сомневаюсь, что кэш Maven имеет какое-то влияние на эту проблему, и если бы это было так, это было бы ошибкой. –

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