打jar出问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zly145236/article/details/82708242
  • 问题1     The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

 在maven项目中使用maven install命令时,出现The forked VM terminated without saying properly goodbye异常,具体问题如下:

解决:

  1. 测试结束时写了一行 System.exit(0); 造成了vm提前退出,去掉之后再次执行maven install正常。
  2. <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18.1</version>
                    <configuration>
                        <forkMode>once</forkMode>
                        <argLine>-Dfile.encoding=UTF-8 -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    原因:

    其中有个forkMode参数很重要。

    Maven运行测试用例时,是通过调用maven的surefire插件并fork一个子进程来执行用例的。forkmode属性中指明是要为每个测试创建一个进程,还是所有测试在同一个进程中完成。

    forkMode 可设置值有 “never”, “once”, “always” 和 “pertest”。
    pretest: 每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归
    once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置。
    always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供这个功能,其中 threadCount:执行时,指定可分配的线程数量。只和参数parallel配合使用有效。默认:5。
     

    查看pom.xml文件,并没有设置forkMode forkMode 使用了默认值,也就是once,表示每次运行test时,新建一个JVM进程运行所有test.。到这里问题就很清晰了,显然是新建的vm使用了默认的运行参数而OutOfMemoryError 了。

  • 问题2   

    没有指定main类

    修改:

    <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

    就好了

    扫描二维码关注公众号,回复: 4593042 查看本文章

猜你喜欢

转载自blog.csdn.net/zly145236/article/details/82708242