2015-01-27 2 views
0

У нас такая странная ошибка. Наши тесты выполняются на локальных машинах (Windows), но не работают на jenkins (linux).Испытание ломается на дженкинсах, но работает локально

Получает

Caused by: java.lang.RuntimeException: There was an error in the forked process 
java.lang.NoClassDefFoundError: 

я быть ищу решения и получил эту информацию на bugzilla или archive.

Есть ли у кого-нибудь идеи по этой проблеме и как ее решить?

Благодаря

UPDATE

Maven-безошибочный-плагин также определен в родительском pom.xml для использования с Cobertura. Тесты выполняются дважды, но во второй раз тесты не выполняются, как описано выше.

Я определяю 2 профиля, которые используют модуль surefire-plugin и определение плагина surefire в разделе.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>${maven-surefire-plugin.version}</version> 
      <configuration> 
       <useSystemClassLoader>false</useSystemClassLoader> 
       <excludes> 
        <exclude>**/*IntegrationTest.java</exclude> 
        <exclude>**/*SoapUiTest.java</exclude> 
       </excludes> 
       <excludes> 
        <!--exclude>**/*.java</exclude --> 
       </excludes> 
       <additionalClasspathElements> 
        <additionalClasspathElement>${basedir}/src/main/java</additionalClasspathElement> 
       </additionalClasspathElements> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>soapUi</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>${maven-surefire-plugin.version}</version> 
        <configuration> 
         <excludes> 
          <exclude>**/*EntityTest.java</exclude> 
         </excludes> 
         <includes> 
          <include>**/*SoapUiTest.java</include> 
         </includes> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
     </profile> 
     <profile> 
      <id>integration</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>${maven-surefire-plugin.version}</version> 
         <configuration> 
          <excludes> 
           <exclude>**/*EntityTest.java</exclude> 
          </excludes> 
          <includes> 
          <include>**/*IntegrationTest.java</include> 
          </includes> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

</project> 

Что я делаю неправильно?

+0

Попробуйте выполнить ваши тесты с помощью 'mvn -e test' в командной строке linux и посмотреть, что произойдет. – splash

ответ

0

Это был ussue с ​​самого Cobertura (-Dcobertura.test = истина). Активация разрешила проблему.

0

Помню, что у меня была аналогичная проблема. Это может быть связано с ulimit - количеством разрешенных открытых файлов. ClassLoader должен открыть файл для загрузки. Так как класс не загружен/доступен NoClassDefFoundError бросается на вызов метода. Проверьте, как можно открыть много файлов:

ulimit -a 

Чтобы увеличить количество открытых файлов:

ulimit -n NEW_NUMBER 

Для того, чтобы изменить его постоянно следовать инструкциям из this link

Выполните следующие действия:

vi /etc/security/limits.conf и добавить ниже указанные

  • мягкий nofile 65535
  • жесткий nofile 65535
+0

Привет, спасибо за подсказку, но это не решит проблему. Что происходит, так это то, что cobertura и surefire используют оба теста. При запуске выполнения по умолчанию проверка подлинности не находит классы. Почему это не делает, это то, что я хочу знать и исправить. –

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