我们遇到了这样一个奇怪的错误。我们的测试在本地机器(windows)中运行,但不在jenkins(linux)上运行。
我们得到了
Caused by: java.lang.RuntimeException: There was an error in the forked process
java.lang.NoClassDefFoundError:
我正在寻找解决方案并在bugzilla上获取此信息 或archive。
有没有人对这个问题有所了解以及如何解决它?
由于
更新
maven-surefire-plugin也在父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 :(得分:0)
我记得有过类似的问题。它可能与ulimit相关 - 允许打开的文件数。 ClassLoader需要打开文件进行加载。由于类未加载/可用,因此在方法调用时抛出NoClassDefFoundError。 检查可以打开多少个文件:
ulimit -a
增加已打开文件的数量:
ulimit -n NEW_NUMBER
要永久更改,请按照this link
中的说明操作按照以下步骤操作:
vi /etc/security/limits.conf并在下面提到
- soft nofile 65535
- hard nofile 65535
答案 1 :(得分:0)
这是cobertura本身的问题(-Cobertura.test = true)。激活它解决了问题。