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


192

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

[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

7
출력이 제안하는 것처럼 -e 및 -X를 사용하여 Maven을 다시 실행하고 제공 한 내용을 붙여 넣으십시오. 또한 자신의 코드 또는 기존 라이브러리를 작성하고 있습니까? 자신의 코드를 작성하는 경우 어디서나 System.exit (int)를 호출하고 있습니까? 기존 라이브러리를 구축하는 경우 소스를 어디서 얻었습니까?
Dylon April

@Dylon Edwards : SDN 구현을위한 기존 소스 코드 인 OpenDayLight 프로젝트입니다.
astack

내가 문제를 재현 한 최근 시나리오는 xml 파일에서 테스트 스위트를 실행했을 때였습니다. xml 파일이 더 이상 존재하지 않는 클래스를 정의하거나 클래스의 정규화 된 이전 이름을 참조한 경우 JVM이 클래스를로드하지 못합니다. 이로 인해 이상한 메시지가 나타납니다. 스택 추적에 더 가까이 다가 가면 이러한 문제를 식별하는 데 도움이되므로이 경우 -e 또는 -X 스위치를 전달할 필요가 없습니다.
Ivaylo Slavov

@ astack 이것에 대한 해결책은 무엇입니까? 답을 표시하거나 직접 작성해주세요.
Naman

답변:


122

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

<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>

7
+1이 스 니펫을 그대로 사용했으며 Travis-CI의 문제를 해결했습니다. 우리는 개발자의 워크 스테이션에서 이것을 얻지 못했습니다.
StartupGuy

7
위의 문제는 해결되지 않았습니다. 이 문제는 종속성 (jar 등) 중 하나 .m2가 손상된 경우 발생할 수 있습니다 . ~ / .m2 / repository를 삭제 rm -rf ~/.m2/repository한 다음 mvn install해결했습니다.
ch4nd4n

2
이것을 복사하여 내 pom 파일에 붙여 넣으면 매력처럼 작동했습니다.
Flaom

8
OpenJDK 64 비트 서버 VM 경고 : MaxPermSize = 256m 옵션 무시 지원은 8.0에서 제거되었습니다
Julien

2
누군가 그것이 실제로 무엇을하고 있고 어떤 효과가 있는지 설명 할 수 있습니까?
borgmater

72

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

명령:

mvn clean install

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

mvn clean install > log-file.log

로그가 너무 길면 나에게도 문제가되었습니다! 로그 파일로 리디렉션해도 도움이되지 않았습니다. 정보에서 디버그로 가장 일반적인 로깅 문을 변경하면 문제가 해결되었습니다.
RvPr

7
내 경우에는 너무 많은 로깅이 실제 문제였습니다!!
최창원 최

1
오류 스트림도 잊지 마십시오 : mvn clean test 2> err.txt 1> out.txt 또는 mvn clean test> out.txt 2> & 1 또는 mvn clean test 2> & 1 | tee out.txt 리디렉션하는 동안 + F out.txt가 적은 다른 콘솔에서 출력을 볼 수 있습니다.
radzimir

1
나를 위해 Windows cmd에서 Intellij 콘솔로 전환하면 해결되었습니다.
브로콜리

3
실제로 로그 파일로 리디렉션하면이 문제가 해결됩니다.
horizon7

41

나는 매우 비슷한 문제가 있습니다 ( 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>

나를 위해이 조합은 감사했습니다 : <plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-surefire-plugin </ artifactId> <version> 2.22.1 </ version> <configuration> < testFailureIgnore> true </ testFailureIgnore> </ configuration> </ plugin>
Abhishek

maven:3.6.0-jdk-10Docker 이미지를 사용하고 해결 버전 3.0.0-M3으로 업그레이드 해 주셔서 감사합니다 maven-surefire-plugin.
danialk

20
솔루션 3과 관련하여 실제로 테스트 실패를 무시하는 것이 해결책이라고 말할 수 있습니까? 결과가 의미가없는 경우 테스트를하는 요점은 무엇입니까?
Ulukai 2018 년

방금 maven-surefire-plugin을 2.22.2로 업그레이드했으며 정상적으로 작동합니다!
Krzysztof Walczewski

예! 확실한 v2.22.2로 업그레이드하면 나에게도 해결되었습니다. 고마워!
Migs

32

오늘 (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

1
감사. 이 경우 1.8.0_161-b12에서 11.0.1 + 13으로 전환하는 것이 도움이되었습니다.
Karussell

1
이것은 Jenkins에서 직면 한 정확한 문제이며 지금 해결되었습니다. 감사.
Vighnesh Pai

OP에는 또 다른 오류 메시지가 있습니다.The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
PetroCliff

1
@PetroCliff 저는 " 이 오류 로 Jenkins에서 빌드가 깨지는 것을 발견했습니다"라고 말했을 때 발생하는 오류라는 것을 인정했습니다 . 그런 다음 오류가 잘못되어 실제 오류가에 있다고 설명했습니다 surefire-reports.
majikman 2016 년

25

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

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

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


9

우분투에서 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>

1
최신 버전 3.0.0-M1 (예 :)을 추가하면 문제가 해결됩니다.
Galigator

6

나는 오늘 같은 문제가 있었고 실제 문제는 로그와 함께 메시지와 함께 더 많이보고되었습니다. 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를 모두 사용하고 있습니다.


6

JDK 1.8.0_ 65 에서 Jacoco 플러그인으로 mvn 명령을 실행할 때 비슷한 문제가 발생했습니다.

[INFO]
A fatal error has been detected by the Java Runtime Environment:

JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17).........
Problematic frame:
PhaseIdealLoop::build_loop_late_post(Node*)+0x144
............
............
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test (default-test) on project 

 The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

JDK에 버그가있었습니다. https://bugs.openjdk.java.net/browse/JDK-8081379

솔루션은 param -XX : -UseLoopPredicate를 사용하여 mvn clean install을 실행하는 것이 었습니다 .

또는 JDK로 업데이트하십시오 (최신 마이너 버전이 작동한다고 생각합니다)


6

maven-surefile-plugin의 useSystemClassLoader를 끄십시오.

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

1
이것은 나를 위해 고친 것입니다. gitlab에서 대기중인 도커 이미지에 인공물을 통해 maven을 작성했습니다. 대표 설정이 작동하기 어려웠으며 확실한 설정을위한 많은 옵션을 시도한 후에 버전 2.22.0으로 수정되었습니다.
Richard Bown

1
Gitlab CI의 모든 maven 작업에 대해이 옵션을 추가해야하며 이유가 없습니다.
cljk

5

누구든지 사용자 정의 argLine 인수를 포함하는 경우 메모리 할당 문제의 원인 일 수 있으므로 다시 고려해야합니다.

예를 들어 (내가 가진) :

<argLine>XX:MaxPermSize=4096m ${argLine}</argLine>

이제 하드 지정된 값을 사용합니다.

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

어떤 이유로 든 Jacoco와 같은 Surefire와 통합 된 애플리케이션은 빌드시 발생하는 테스트와 공존하기에 충분한 메모리를 요청하지 않습니다.


5

Jenkins Docker 컨테이너 에서도이 문제가 발생했습니다 (jenkins : lts, ​​jenkins, jenkins : slim 및 jenkins : slim-lts. 모든 저장소를 거치고 각 프로젝트의 pom을 업데이트하고 싶지 않았습니다. maven 명령 행 호출에 disableClassPathURLCheck를 추가했습니다.

mvn test -DargLine="-Djdk.net.URLClassPath.disableClassPathURLCheck=true"

5

maven surefire 2.21.0을 사용하여 reuseForks옵션 값을 true 에서 false로 변경하는 문제를 해결했습니다 .

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <reuseForks>false</reuseForks>
            </configuration>
        </plugin>
    </plugins>
</build>

빌드중인 전체 구성 섹션은 다음과 같습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <skip>false</skip>
                <reuseForks>false</reuseForks>
                <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                <argLine>-Dfile.encoding=UTF-8</argLine>
                <useSystemClassLoader>false</useSystemClassLoader>
                <includes>
                    <!--Test* classes for the app testing -->
                    <include>**/directory/Test*.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

4

컴퓨터가 64 비트인지 32 비트인지 확인해야합니다. 컴퓨터가 32 비트이면 메모리 인수가 4096을 초과해서는 안되며 4GB 미만이어야합니다. 그러나 시스템이 64 비트 인 경우 Java 64 비트를 설치하고 java 64 비트 설치를 가리키는 mvn.bat에 JAVA_HOME을 제공하십시오.


4

제공된 답변 중 어느 것도 문제를 해결하지 못한 경우를 만났습니다. log4j 및 SLF4J / logback을 사용하는 레거시 응용 프로그램과 함께 사용되었습니다.

이전 상황 : clean testEclipse 내에서 시작할 때 빌드가 제대로 실행되었지만 명령 행에서 시작할 때이 오류가 발생했습니다. CircleCI의 CI 빌드도 제대로 실행되었습니다.

내가 한 것 : 순수한 추측 중 올바른 것을 구성하는 것입니다. logback-test.xml 하고 로깅의 세부 정보를 다이얼 다운합니다. 보라, 나는 더 이상이 오류가 발생하지 않았으며 이제 명령 줄에서 프로젝트 (이 오류가 발생한 모듈뿐만 아니라)를 빌드 할 수 있습니다.

내 요점은 로깅 프레임 워크를 사용하거나 구성하는 방식이 다른 설명 일 수 있다는 것입니다 .

실제로 log4j와 logback 사이의 충돌입니까? 아니면 테스트에 의해 생성 된 대량의 로깅이 어떻게 든 명령 행 버퍼를 오버플로 한 것일까 요? 모르겠어요 그것은 나에게 미스터리로 남아있다.


문제를 실제로 해결 / 회피 / 회피 할 수 있기 때문에 공감. Windows에서 slf4j 및 sl4j-simple을 사용하고 있으며 느린 출력 이이 방향으로 나에게 지적했습니다. System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "warn") 설정; 트릭을했다. maven-surefire-plugin을 2.18.1로 다운 그레이드하는 것도 효과가있었습니다.
marcus

4

Java 12로 업그레이드 한 후 비슷한 문제에 직면했습니다. 솔루션은 jacoco 버전을 업데이트하는 것이 었습니다. <jacoco.version>0.8.3</jacoco.version>


이것은 실제로 내 프로젝트에서 겪고있는 문제였습니다. 이 답변이 너무
안타깝다

4

버전 2.22.2에는 분기 JVM에 실제 문제가 있습니다. 버전 2.20을 사용하십시오-그것은 매력처럼 작동합니다!


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

흠, 이것은 실제로 도움이됩니다!
Zhen Zhang

예, v2.22.2에 문제가 maven:3.6-jdk-8-alpine있습니다. 너무 짜증나!
KimchiMan

3

Bamboo로 컨테이너화 된 jar 응용 프로그램을 빌드하는 동안 최근 에이 오류가 발생했습니다.

org.apache.maven.surefire.booter.SurefireBooterForkException : 분기 된 VM이 작별 인사를하지 않고 종료되었습니다.

많은 시간의 연구 끝에 나는 그것을 고쳤다. 그리고 내 솔루션을 여기에 공유하는 것이 도움이 될 것이라고 생각했습니다.

따라서 mvn clean packagedocker 컨테이너에서 java 응용 프로그램에 대해 bamboo 명령을 실행할 때마다 오류가 발생합니다 . 나는 Maven 전문가는 아니지만 스프링 부팅에 포함 된 Surefire 및 Junit4 플러그인에 maven 종속성으로 문제가있었습니다.

문제를 해결하려면 Junit5 용 Junit4를 교체하고 Surefire 플러그인을 재정의해야합니다. pom.xml .

1. 스프링 부트 의존성 삽입 제외 :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <!-- FIX BAMBOO DEPLOY>
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
    <!---->
</dependency>

2. 새로운 Junit5 종속성을 추가하십시오.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-surefire-provider</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>

3. 플러그인 섹션 안에 새로운 플러그인 삽입

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>
</plugin>

대나무 구조물을 수리하기에 충분해야합니다. Junit5를 지원하도록 모든 Junit4 테스트도 변환하십시오.


2

pom.xml에서 이것을 설정하면 나를 위해 일했습니다. 그러나 다른 해결 방법은 설명서를 확인해야합니다. https://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html

       <plugin>

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <!--these strange settings fixes a chrash and dumpstream from surefire when run from command line
                    Caused by: java.lang.ClassNotFoundException: org.apache.maven.surefire.booter.ForkedBooter
                -->
                <useSystemClassLoader>true</useSystemClassLoader>
                <useManifestOnlyJar>false</useManifestOnlyJar>
            </configuration>
        </plugin>

2

테스트에 사용 된 분기 된 JVM에 메모리가 부족합니다. 해결책은 JVM forking을 비활성화하고 기본 JVM에서 테스트를 실행하여 충분한 메모리가 있는지 확인하거나 args를 전달하여 분기 된 JVM의 메모리를 늘리는 것입니다.

답변 에서 해결책을 확인하십시오



1

이 문제에 대한 내 해상도는 것이었다 닫고 내 컴퓨터의 메모리를 질식 된 빌어 먹을 크롬 브라우저를 🙄


1

당신은 자바 옵션을 설정할 수 있습니다

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install


1

Windows (OpenJDK11, Maven 3.6.0, SUREFIRE 3.0.0-M1)에서 근본 원인이 있습니다.

# Created at 2018-11-14T14:28:15.629
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c7500000, 522190848, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455)

과 같은 예를 들어, 페이징 파일 크기를 증가시켜 해결 .


Linux (4.4.0-145-generic, amd64)에서 Jenkins 작업에 대해 Oracle JRE 8에서 AdoptOpenJDK_8u202b08로 변경되어 "포크"오류가 발생하기 시작했습니다.- "목표 org.apache.maven.plugins의 실행 기본 테스트 : maven-surefire-plugin : 2.19.1 : test 실패 : 분기 된 VM이 작별 인사를하지 않고 종료되었습니다. VM 충돌 또는 System.exit가 호출 되었습니까? " -Oracle JRE로 다시 변경되었으며 오류가 중지되었습니다. 이것은이 문제를 가진 유일한 직업 (약 300 명)입니다. 다행히도 내부 프로젝트 일 뿐이며 Sun / Oracle JRE에 보관할 수있는 클라이언트 제공 제품이 아닙니다.
Robert

1

위의 모든 시도, 작동하지 않았다. 아래 솔루션이 나를 위해 작동합니다.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
    <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>


이 정확한 플러그인 버전은 저를 도와주었습니다. Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00) Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_201\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
그건


1

제공된 모든 솔루션 (포킹, 시스템 로더, 더 많은 메모리 등)을 시도했지만 아무것도 작동하지 않았습니다.

환경 : gitlab ci 환경에서 빌드가 실패하여 도커 컨테이너 내에서 빌드가 실행되었습니다.

해결책 : 버전 2.20.1에서 surefireplugin을 사용하고 2.21.0 이상으로 업그레이드 (2.22.1 사용)하여 문제가 해결되었습니다.

원인 : SUREFIRE-1422 -surefire가 명령을 사용함ps docker 환경에서 사용할 수 없었으며 "충돌"을 유발 . 이 문제는 2.21.0 이상에서 해결되었습니다.

다른 질문 에서이 답변 덕분에 https : //.com/a/50568662/2970422


1

포트 5005에서 Selenium 테스트 코드를 원격 디버깅하는 동안 MacOS 에서도이 문제가 발생했습니다. 문제는 남아있는 확실한 firefork-for-JVM으로 인해 발생하는 것으로 나타났습니다. Eclipse IDE 터미널로의 로그 출력에 이미 사용중인 Address (주소) 가 표시되지 않았습니다 . Eclipse가 실제로 실행하려고했던 MacOS 터미널에서 동일한 명령을 실행했을 때만 로그 메시지가 표시되었습니다.

/bin/sh -c cd /path/to/your/project/directory && /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/bin/java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar /path/to/target/surefire/surefirebooter230340673926465933.jar /path/to/target/surefire 2019-06-28T10-50-02_140-jvmRun1 surefire6455775580414993159tmp surefire_02461993428448591420tmp

불량 JVM 인스턴스를 종료하면 (활동 모니터에서 Java 프로세스 이름 찾기) 문제가 해결되었습니다. 그런데 open jdk 8 (v1.8.0_212)에 문제없이 surefire 플러그인 버전 2.21.0을 실행하고 있습니다. 모든 경로는 빌드 환경 및 가능하면 포트 (주소 = 5005)에 따라 다릅니다.


1

maven test를 사용하여 단위 테스트를 실행할 때도 같은 문제에 직면했습니다. 확실한 버전 변경을 시도했지만 작동하지 않습니다. EARLIER : (문제가 발생했을 때) : javac는 jdk 1.8에서 발생했습니다. java는 jdk 1.11에서 java bin을 가리키고 있습니다. CURRENT : (문제가 해결되었을 때) : javac와 java가 모두 jdk 1.8의 저장소

Teja에 감사합니다.


0

테스트 클래스의 정적 멤버 변수가 클래스를 통해 테스트 케이스에 사용 된 객체를 작성하는 메소드를 호출 한 후이 오류가 발생하여 메소드에서 예외가 발생했습니다.

// Object created inside test class by calling a static getter.
// Exception thrown in getter:
private static Object someObject = SomeObject.getObject(...);

// ... <Object later used in class>

일부 수정 사항에는 각 테스트 사례 내에서 객체를 다시 작성하고 이에 따라 예외를 포착하는 것이 포함됩니다. 또는 @BeforeTest 메소드 내부의 오브젝트를 초기화하고 올바르게 빌드되었는지 확인하십시오.


0

필자의 경우이 문제는 훨씬 긴 작업 공간 경로와 관련이 있습니다. 그래서 경로 리팩토링을 수행하여 문제를 해결했습니다.


창문 기계에 있었나요?
hithwen

예, Windows에서 실행 중입니다.
thiago-devel

어떻게 찾았 어?
dzieciou 2016
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.