Maven构建运行测试时发生故障,由于JVM崩溃

问题描述:

我有一千个测试Java项目,Maven构建运行测试时发生故障,由于JVM崩溃

当我进行的测试,它结束如下:

$ mvn surefire:test 
. . . 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 01:49 h 
[INFO] Finished at: 2017-02-17T06:29:55-05:00 
[INFO] Final Memory: 13M/921M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-cli) on project Mine: ExecutionException; nested exception is java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? 
[ERROR] Command was/bin/sh -c cd /home/projects/mine && /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre/bin/java -jar /home/projects/mine/target/surefire/surefirebooter5661758071622971420.jar /home/projects/mine/target/surefire/surefire7221142682471689181tmp /home/projects/mine/target/surefire/surefire_96350455888867423114tmp 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

我Maven的配置如下:

$ mvn -version 
Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-13T16:10:27-04:00) 
Maven home: /opt/maven 
Java version: 1.7.0_131, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.10.0-514.6.1.el7.x86_64", arch: "amd64", family: "unix" 

我试着用-X选项更新行家或重新运行测试,但没有发现什么特别的东西。任何想法如何调试/处理这个问题?

更新 我发现问题与使用某些本机代码的较新版本有关。我必须替换旧版本的lib版本文件.so来解决问题。

+0

同意@khmarbaise。尝试更新插件版本,2.16是旧的(2013!),并且自那时以来已经做出了许多修复..可能完全解决了这个问题,或者至少为您提供了有关问题真实性的更多线索。 – user944849

+0

这不是插件版本的问题,因为我的同事在同一个项目上工作没有这个问题。 – bachr

+0

好的,从具有该问题的计算机上的空本地回购开始。一个或多个工件可能会损坏,我以前见过这种情况。 – user944849

用你的maven插件试试这个。也许你的测试用例需要大量的内存,以便修改此,如果仍然发生这种碰撞

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> 

而在最后看起来像这样

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.x</version> 
    <configuration> 
     <forkMode>once</forkMode> 
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> 
    </configuration> 
</plugin> 
+1

不要使用[maven-surefire-plugin]这样的旧版本(https://maven.apache.org/surefire/maven-surefire-plugin/) – khmarbaise

+0

我不好意思添加了2.x以免让人困惑 – Gatusko

+0

我已经尝试使用maven选项来增加内存,但没有帮助 – bachr