2017-01-17 2 views
2

Ошибка ниже при вызове тестовых примеров TestNG с профилем клевера. Не изменил ни одной версии клевера. Не понимаю, почему это происходит.Вызвано: java.lang.NoClassDefFoundError: com_atlassian_clover/TestNameSniffer

Вот моя деталь LIBS - клевер-4.0.3, TestNG - 6.0.1, Maven 3

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 Это действительно настоящее имя класса. Что касается того, почему это так запутанно, я понятия не имею. Позор вам, атлас. –

+0

Тот, у кого есть косая черта, не является настоящим или даже легальным именем класса. – EJP

ответ

0

Итак, наконец, что же мне помочь здесь, добавив еще одну зависимости клевера в зависимости тега. У меня уже была эта зависимость как часть профиля клевера. Но все же я получал выше сообщенную ошибку.

После нескольких часов, когда я добавил еще одну и ту же зависимость рядом со всеми другими библиотеками. Поскольку я был вне мысли. И магически это сработало.

Вот мой обновленный pom.xml с обеих копиях зависимостей -

... 
<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 

средства го в Clover JAR (com.atlassian.clover: clover) отсутствует путь к классу.

Это обычно вызвано двумя вопросами:

  1. Отсутствующие com.atlassian.clover: клевер зависимость. Обратите внимание, что Clover Maven Plugin автоматически добавляет эту зависимость к проекту (во время сборки). Однако в некоторых случаях вам нужно добавить эту зависимость вручную к другим плагинам Maven - обычно к тем, которые fork new JVM - например, для тестов внутри контейнера.

  2. Build работает с отключенным Clover, но все еще не работает при этой ошибке. Это обычно происходит, если вы запустили сборку с помощью Clover с помощью «clover: setup» и следующей установки (или развертывания) JARs. Когда вы снова запустите свою сборку, но на этот раз с отключенным Clover, сборка может извлечь эти JAR из кеша ~/.m2. Поскольку эти JAR содержат инструментальный код и com.atlassian.clover: clover отсутствует, сборка завершится неудачей. Чтобы решить эту проблему, очистите кеш ~/.m2 и не используйте «clover: setup» с «install» или «deploy».

Ссылка:

Приветствия Marek

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