2013-03-25 7 views
1

용접 CDI 및 JPA를 사용하는 프로젝트에 Arquillian을 설치하고 있는데 GlassFish 컨테이너를 사용하려고합니다 (Weld 내장 컨테이너가 JPA를 지원하지 않는다고 읽었습니다).Arquillian에서 여러 컨테이너 오류가 발생했습니다.

pom.xml에 GlassFishContainer를 추가했지만 테스트 사례를 실행할 때 오류 메시지가 표시됩니다. 이드의 오류 메시지는 다음과 같습니다.

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 embedded container와 glassFilsh가 모두있는 것 같습니다. 나는 내 pom.xml을 두 번 확인 했으므로 나는 방금 glassfish를 넣었다. Weld embedded 컨테이너의 흔적을 찾을 수 없었습니다. 어떤 생각?!

+0

'mvn dependency : tree'를 실행하여 Weld-EE 컨테이너 어댑터를 클래스 패스로 가져 오는 것이 있는지 확인하십시오. 나는 당신이 동시에 활성화 된 두 개의 프로필을 가지고 있다고 의심하지만, 또한 전 이적 종속성이 될 수 있습니다. –

+0

동의. 빌드 클래스 경로에는 하나의 컨테이너 만있을 수 있습니다. 프로필을 사용하지 않고 두 가지 종속성을 모두 가져온 것일 수도 있습니다. –

답변

0

maven 로컬 저장소에서 컨테이너 중 하나를 삭제하십시오. Maven 로컬 저장소의 기본 위치는 $HOME/.m2/repository/입니다.

Weld Embedded Server로 테스트를 실행하려면 org/jboss/arquillian/container/glassfish.embedded_3_1을 삭제하고 다른 경우 org/jboss/arquillian/container/weld.ee.embedded_1_1을 삭제하십시오.

두 Jar는 동일한 인터페이스를 구현하고 Arquillian은 사용할 인터페이스를 결정할 수 없습니다.

+0

'~/.m2/repository /'를 삭제해도 제 경우 도움이되지 않았습니다. Maven 캐시가이 문제에 어떤 영향을 미치는지 의심 스럽습니다. 그렇다면 버그 일 것입니다. –