2014-02-05 2 views
0

일부 JUnit 테스트를 위해 mockito api가있는 powermock이 필요했습니다. 테스트는 잘 돌아가고 있지만 지금은 프로젝트를 실행할 수 없습니다.PowerMock으로 테스트를 추가 한 후 Spring webapp가 시작되지 않습니다.

Caused by: java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile 
at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:246) 
at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:212) 
at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:173) 
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:126) 
... 
Caused by: java.lang.ClassNotFoundException: javassist.bytecode.ClassFile 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:154 

나는 이유를 이해하지 않습니다

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.9</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>1.9.5</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-api-mockito</artifactId> 
     <version>1.5.4</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-module-junit4</artifactId> 
     <version>1.5.4</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
<!-- THIS IS NEEDED FOR JAVA 1.7 --> 
    <dependency> 
     <groupId>org.javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.18.1-GA</version> 
     <scope>test</scope> 
    </dependency> 

내가 톰캣에 응용 프로그램을 배포 할 때, 나는이 예외를 얻을 : 모든 새로운 라이브러리가 시험 범위에 있기 때문에 나는 그것을 이해하지 않는다 테스트 범위 종속성이 배포를 방해합니다.

답변

3

당신은 정말 해달라고 당신의 치어에 대한 충분한 정보를 가지고 있지만이 가능성이 보인다 :

와 Javassist 최대 절전 모드 (here 참조)의 이적 의존성, 당신은 powermock를 추가하기 전에이의 결과로 당신의 WAR 파일에 포함되고 있었다 이 종속성. 당신의 powermock 속임수와

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>XXXXX</version> 
</dependency> 

는 당신이 명시 적으로 범위를 테스트함으로써와 Javassist가 당신의 WAR 파일에 포함되지 않도록 메이븐을 말한 : 그래서

<dependency> 
    <groupId>org.javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.18.1-GA</version> 
    <scope>test</scope> 
</dependency> 

runtime과에와 Javassist 범위를 변경 당신의 WAR 파일에 포함될 것이며 ClassNotFoundException은 사라져야합니다.

+0

감사합니다. 그게 바로 문제입니다. – NeplatnyUdaj

관련 문제