[java] 분기 된 VM은 작별 인사없이 종료되었습니다. VM 충돌 또는 System.exit 호출

이 문제를 해결하도록 도와주세요. 로그의 오류가 무엇을 의미하는지 정확하게 이해하지 못합니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.749s
[INFO] Finished at: Thu Apr 24 10:10:20 IST 2014
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project samples.simpleforwarding: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command wascmd.exe /X /C ""C:\Program Files\Java\jdk1.7.0_55\jre\bin\java" -Xmx1024m -XX:MaxPermSize=256m -jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefirebooter53410321571238933.jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire86076271125218001tmp E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire_01846991116135903536tmp"
[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/PluginExecutionException



답변

나는 같은 문제가 있었고 다음을 추가하여 해결했다.

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

전체 플러그인 요소는 다음과 같습니다.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkCount>3</forkCount>
    <reuseForks>true</reuseForks>
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
  </configuration>
</plugin>


답변

필자의 경우이 문제는 IntelliJ IDEA 콘솔 (OS Windows 10) 로의 너무 긴 로그 출력과 관련이 있습니다.

명령:

mvn clean install

이 명령으로 문제가 해결되었습니다.

mvn clean install > log-file.log


답변

나는 매우 비슷한 문제가 있습니다 ( Maven 빌드 및 maven-failsafe-plugin-분기 된 VM은 작별 인사를하지 않고 종료 되었습니다).

문제 설명

버전 2.20.1 및 2.21.0에서만 maven 플러그인 maven-surefire-plugin에 문제가 있습니다. 확인하고 버전 2.20.1을 사용합니다.

해결책 1

플러그인 버전을 2.22.0으로 업그레이드 하십시오 . pom.xml에 추가하십시오 .

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.0</version>
</plugin>

해결책 2

플러그인 버전을 2.20으로 다운 그레이드하십시오 . pom.xml에 추가하십시오 .

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.20</version>
</plugin>

해결책 3

플러그인 구성 testFailureIgnore를 사용하십시오 . pom.xml에 추가하십시오 .

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <testFailureIgnore>true</testFailureIgnore>
  </configuration>
</plugin>


답변

오늘 (2018 년 10 월 30 일) 현재 Jenkins 에서이 오류로 빌드가 깨지는 것을 알았습니다.

이 오류는 약간 오해의 소지가 있으며 target/surefire-reports/ 다음 오류 메시지를 보려면 덤프 출력 을 확인해야합니다.

Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooter

OpenJDK 181의 가능한 버그를 언급하는 다음 SO 게시물로 연결됩니다. Maven surefire에서 ForkedBooter 클래스를 찾을 수 없습니다

해당 게시물의 수정 사항 중 하나가 내 문제를 해결합니다. 구체적으로, 나는 다음 중 하나를 사용했습니다.

  1. 고정 표시기 컨테이너 건물에서 전환 maven:3.5.4-jdk-8maven:3.5.4-jdk-8-alpine
  2. 스프링 부트 클래스 로더 재정의 : https://stackoverflow.com/a/50661649/1228408

답변

Surefire FAQ 의이 부분 이 도움이 될 수 있습니다.

Surefire가 “잘못 말하지 않고 분기 된 VM이 종료되었습니다”라는 메시지와 함께 실패합니다.

Surefire는 언제든지 System.exit ()를 호출하는 테스트 또는 참조 라이브러리를 지원하지 않습니다. 그렇게 할 경우 확실한 보증과 호환되지 않으므로 라이브러리 / 공급 업체에 문제를 제기해야합니다. 또는 분기 된 VM도 여러 가지 이유로 충돌 할 수 있으며 이로 인해이 문제가 발생할 수도 있습니다. 테스트가 실행될 때 VM 충돌을 나타내는 클래식 “hs_err *”파일을 찾거나 maven 실행으로 인한 로그 출력을 검사하십시오. 충돌 프로세스의 일부 “특별한”출력이 콘솔 / 로그에 덤프 될 수 있습니다. 이것이 CI 환경에서 발생하고 일정 시간 동안 실행 한 후에 만 ​​테스트 스위트가 모든 실행에서 상황을 악화시키는 일종의 OS 레벨 자원을 유출 할 가능성이 있습니다. 정기적 인 OS 수준 모니터링 도구가 표시 될 수 있습니다.


답변

우분투에서 Java 8과 동일한 문제에 직면했습니다.

그런 다음 https://stackoverflow.com/a/53016532/1676516

java 8 https://issues.apache.org/jira/browse/SUREFIRE-1588 의 surefire 플러그인 버전 2.22.1의 최신 버그 인 것 같습니다.

로컬 mvn 설정을 통해 제안 된 해결 방법을 따랐습니다. ~/.m2/settings.xml

<profiles>
    <profile>
        <id>SUREFIRE-1588</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>
        </properties>
    </profile>
</profiles>


답변

나는 오늘 같은 문제가 있었고 실제 문제는 로그와 함께 메시지와 함께 더 많이보고되었습니다. Cannot use a threadCount parameter less than 1; 1 > 0 . <threadCount>1</threadCount>surefire-plugin 구성을 추가 할 때 다른 오류가 사라졌습니다.

전체 플러그인 구성 :

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.18.1</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
            <configuration>
                <threadCount>1</threadCount>
            </configuration>
        </plugin>

… 그리고 예, 이전 버전과의 호환성을 위해이 테스트 프레임 워크에서 junit과 testng를 모두 사용하고 있습니다.