2017-01-17 1 views
2

클로버 프로파일이 활성화 된 TestNG 유닛 테스트 케이스를 호출 할 때 아래 오류가 발생합니다. 클로버 버전을 변경하지 않았습니다. 왜 그런 일이 일어나는지 전혀 알지 못합니다. 클로버 4.0.3, TestNG를 - - 6.0.1 받는다는 3 그래서 마침내 여기 좀 도와 않은 종속 태그 클로버의 또 다른 의존성을 추가하는 것을원인 : java.lang.NoClassDefFoundError : com_atlassian_clover/TestNameSniffer

Caused by: java.lang.NoClassDefFoundError: com_atlassian_clover/TestNameSniffer 
at com.mds404.catalog.infrastructure.entity.ModelBase.<clinit>(ModelBase.java:27) 
at sun.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40) 
at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59) 
at org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:111) 
at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:51) 
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:52) 
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:41) 
at org.mockito.Mockito.mock(Mockito.java:1014) 
at org.mockito.Mockito.mock(Mockito.java:909) 
at com.mds404.rest.v2.controller.BaseControllerTest.<init>(BaseControllerTest.java:107) 
... 33 more 
Caused by: java.lang.ClassNotFoundException: com_atlassian_clover.TestNameSniffer 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at org.apache.maven.surefire.booter.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:97) 
... 46 more 
+0

. 밑줄과 슬래시를 점으로 변경하십시오. – EJP

+0

@EJP 실제로는 실제 클래스 이름입니다. 왜 그렇게 혼란스러워하는지 나는 모른다. 부끄러운 줄 알아, Atlassian. –

+0

슬래시가있는 클래스 이름은 실제 클래스 이름이 아닙니다. – EJP

답변

0

여기 내 libs와 세부 사항입니다. 클로버 프로필의 일부로 이미이 종속성을 가졌습니다. 그러나 여전히 나는보고 된 오류보다 높아지고있었습니다.

다른 모든 라이브러리 옆에 동일한 종속성을 한 번 더 추가 할 때 몇 시간을 소비 한 후. 내가 생각을 잃었을 때. 그리고 마술처럼 작동했습니다. 다음

... 
<profile> 
<id>clover</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
    </activation> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.atlassian.maven.plugins</groupId> 
       <artifactId>maven-clover2-plugin</artifactId> 
       <version>4.0.3</version> 
       <configuration> 
        <methodContexts> 
          <toStr>(.*)?public .*(toString).*</toStr> 
          <hashCode>(.*)?public .*(hashCode).*</hashCode> 
          <equals>(.*)?public boolean equals\(Object.*\).*</equals> 
          <privateConstructors>(.*)?private +[a-zA-Z0-9]+ *\(\).*</privateConstructors> 
        </methodContexts> 
        <contextFilters>toStr,hashCode,equals,privateConstructors</contextFilters> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.atlassian.clover</groupId> 
      <artifactId>clover</artifactId> 
      <version>4.0.3</version> 
     </dependency> 
    </dependencies> 
</profile> 

그리고 다른 모든 종속 - -

.... 
<dependencies> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${org.springframework.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>com.atlassian.clover</groupId> 
    <artifactId>clover</artifactId> 
    <version>4.0.3</version> 
</dependency> 
... 
1

오류

Caused by: java.lang.NoClassDefFoundError: com_atlassian_clover/TestNameSniffer 

수단 여기

내 업데이트 모두 종속 사본의 pom.xml이다 일 클래스 경로에서 Clover JAR (com.atlassian.clover : clover)이 누락되었습니다.

이것은 일반적으로 두 가지 문제로 인해 발생 : 클로버 의존성 :

  1. 이 com.atlassian.clover가 없습니다. Clover Maven Plugin은이 종속성을 프로젝트에 자동으로 추가합니다 (빌드 중에). 그러나 경우에 따라이 종속성을 수동으로 다른 Maven 플러그인 (예 : 새로운 JVM을 포크하는 플러그인)에 추가해야합니다 (예 : 컨테이너 내 테스트의 경우).

  2. 클로버를 사용하지 않고 빌드가 실행 중이지만이 오류가 계속 발생하지 않습니다. 이것은 대개 'clover : setup'을 통해 Clover를 사용하도록 설정하고 다음에 생성 된 JAR을 설치 (또는 배포)하여 빌드를 실행하는 경우에 발생합니다. 빌드를 다시 실행할 때, 클로버가 비활성화 된 이번에는 빌드가 ~/.m2 캐시에서 이러한 JAR을 가져올 수 있습니다. 이 JAR에는 인스트루먼트 된 코드가 들어있어 com.atlassian.clover : clover가 누락되어 빌드가 실패합니다. 이 문제를 해결하려면 ~/.m2 캐시를 정리하고 "설치"또는 "배포"와 함께 "클로버 : 설치"를 사용하지 마십시오.

참조 :

건배 마렉도 유효한 클래스 이름이 아니다

관련 문제