VM rẽ nhánh chấm dứt mà không nói lời tạm biệt chính xác. Sự cố VM hoặc System.exit được gọi


189

Làm ơn giúp tôi giải quyết vấn đề này. Tôi không hiểu chính xác lỗi trong nhật ký nghĩa là gì.

[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
Vui lòng chạy lại Maven với -e và -X như đầu ra gợi ý và dán những gì nó mang lại cho bạn. Ngoài ra, bạn đang xây dựng mã của riêng bạn hoặc một thư viện hiện có? Nếu bạn đang xây dựng mã của riêng mình, bạn có đang gọi System.exit (int) không? Nếu bạn đang xây dựng một thư viện hiện có, bạn đã lấy nguồn ở đâu?
Dylon

@Dylon Edwards: Đây là một mã nguồn hiện có, dự án OpenDayLight để triển khai SDN.
astack

Một kịch bản gần đây tôi gặp phải vấn đề đó là khi tôi chạy các bộ thử nghiệm từ các tệp xml. Trong trường hợp một tệp xml định nghĩa một lớp không còn tồn tại hoặc đề cập đến tên cũ đủ điều kiện của một lớp đã được di chuyển, thì JVM không tải được lớp. Điều này dẫn đến thông điệp lạ mà bạn quan sát thấy. Nhìn gần hơn với bất kỳ dấu vết ngăn xếp nào có thể giúp bạn xác định các vấn đề như vậy, không cần phải chuyển các công tắc -e hoặc -X trong trường hợp này.
Ivaylo Slavov

@astack điều gì đã trở thành giải pháp cho việc này? bạn có thể đánh dấu một câu trả lời hoặc viết riêng của bạn xin vui lòng.
Naman

Câu trả lời:


121

Tôi đã có cùng một vấn đề và giải quyết bằng cách thêm:

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

Toàn bộ thành phần plugin là:

<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 Tôi đã sử dụng đoạn trích này, nguyên văn và nó đã khắc phục sự cố của tôi với Travis-CI. Chúng tôi không nhận được điều này trên bất kỳ máy trạm nào của nhà phát triển.
StartupGuy 17/2/2016

7
Ở trên đã không khắc phục vấn đề cho tôi. Vấn đề này 'có thể xảy ra khi một trong các phụ thuộc (jar, v.v.) .m2bị hỏng. Xóa ~ / .m2 / kho lưu trữ rm -rf ~/.m2/repositoryvà sau đó mvn installgiải quyết nó cho tôi.
ch4nd4n

2
Sao chép và dán nó vào tập tin pom của tôi và nó hoạt động như một cơ duyên, cảm ơn
Flaom

6
Cảnh báo VM máy chủ OpenJDK 64-bit: bỏ qua tùy chọn MaxPermSize = 256m; hỗ trợ đã bị xóa trong 8.0
Julien

2
Ai đó có thể giải thích những gì nó thực sự làm và những tác động của nó?
borgmater

71

Trong trường hợp của tôi, vấn đề liên quan đến việc đăng nhập quá lâu vào bảng điều khiển IntelliJ IDEA (hệ điều hành Windows 10).

Chỉ huy:

mvn clean install

Lệnh này đã giải quyết vấn đề cho tôi:

mvn clean install > log-file.log

Nhật ký quá dài cũng là vấn đề đối với tôi! Chuyển hướng đến một logfile không giúp được gì. Thay đổi một số báo cáo ghi nhật ký phổ biến nhất, từ thông tin sang gỡ lỗi, đã giải quyết vấn đề
RvPr

7
quá nhiều đăng nhập là vấn đề thực sự trong trường hợp của tôi !!
Changwon Choe

1
Đừng quên luồng lỗi: mvn Clean test 2> err.txt 1> out.txt hoặc mvn test test> out.txt 2> & 1 hoặc mvn test test 2> & 1 | tee out.txt Trong khi chuyển hướng, bạn có thể xem đầu ra trong bảng điều khiển khác với ít hơn + F out.txt
radzimir

1
Đối với tôi, việc chuyển đổi từ windows cmd sang bảng điều khiển Intellij đã giải quyết nó.
Bông cải xanh

3
Thật vậy, chuyển hướng đến tệp nhật ký giải quyết vấn đề này.
chân trời7

39

Tôi có một vấn đề rất giống nhau ( Maven build và maven-failafe-plugin - VM rẽ nhánh đã chấm dứt mà không nói lời tạm biệt ) và tìm thấy ba giải pháp phù hợp với tôi:

Mô tả vấn đề

Vấn đề là với plugin maven maven-Surefire-plugin chỉ có trong phiên bản 2.20.1 và 2.21.0. Tôi đã kiểm tra và bạn sử dụng phiên bản 2.20.1.

Giải pháp 1

Nâng cấp phiên bản plugin lên 2.22.0 . Thêm vào pom.xml :

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

Giải pháp 2

Hạ cấp phiên bản plugin xuống 2.20 . Thêm vào pom.xml :

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

Giải pháp 3

Sử dụng cấu hình plugin testFailureIgnore . Thêm vào pom.xml :

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

Đối với tôi, sự kết hợp này hoạt động được cảm ơn: <plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-Surefire-plugin </ artifactId> <version> 2.22.1 </ version> <configure> < testFailureIgnore> đúng </ testFailureIgnore> </ configure> </ plugin>
Abhishek

Cảm ơn cho điều này, sử dụng maven:3.6.0-jdk-10Docker hình ảnh và nâng cấp lên phiên bản 3.0.0-M3của maven-surefire-plugingiải quyết đối với tôi là tốt.
danialk

17
Liên quan đến Giải pháp 3: Chúng ta thực sự có thể nói rằng bỏ qua các thử nghiệm thất bại là một giải pháp? Điểm của việc kiểm tra nếu kết quả của họ là vô nghĩa?
Ulukai

Tôi vừa nâng cấp maven-Surefire-plugin lên 2.22.2 và hoạt động tốt!
Krzysztof Walczewski

Vâng Nâng cấp lên v2.22.2 của chắc chắn cũng đã giải quyết nó cho tôi. Cám ơn!
Migs

32

Kể từ hôm nay (30/10/2018), chúng tôi nhận thấy các bản dựng của chúng tôi bị hỏng ở Jenkins với lỗi này.

Lỗi là một chút sai lệch và yêu cầu nhìn vào đầu ra của kết xuất target/surefire-reports/ để xem thông báo lỗi sau:

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

Điều đó dẫn tôi đến bài viết SO sau đây có đề cập đến một lỗi có thể xảy ra trong OpenJDK 181: Maven chắc chắn không thể tìm thấy lớp ForkedBooter

Một trong những sửa chữa trong bài viết đó giải quyết vấn đề của tôi. Để cụ thể, tôi đã sử dụng một trong những điều sau đây:

  1. Chuyển từ tòa nhà trong container docker maven:3.5.4-jdk-8sangmaven:3.5.4-jdk-8-alpine
  2. Ghi đè trình tải lớp của Spring Boot chi tiết tại đây: https://stackoverflow.com/a/50661649/1228408

1
Cảm ơn. Chuyển đổi từ 1.8.0_161-b12 sang 11.0.1 + 13 đã giúp ích trong trường hợp của chúng tôi.
Karussell

1
Đây là vấn đề chính xác mà tôi gặp phải trên Jenkins của tôi và nó đã được giải quyết ngay bây giờ. Cảm ơn.
Vighnesh Pai

OP có một thông báo lỗi khác:The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
PetroCliff

1
@PetroCliff Tôi thừa nhận đó là lỗi tôi cũng gặp phải khi tôi nói "chúng tôi nhận thấy các bản dựng của chúng tôi bị hỏng trong Jenkins với lỗi này ". Sau đó tôi đã tiến hành giải thích rằng lỗi là sai lệch và lỗi thực tế là ở surefire-reports.
Majikman

25

Phần này của Câu hỏi thường gặp về Surefire có thể giúp bạn:

Surefire thất bại với thông báo "VM rẽ nhánh chấm dứt mà không nói lời tạm biệt"

Surefire không hỗ trợ kiểm tra hoặc bất kỳ thư viện tham chiếu nào gọi System.exit () bất cứ lúc nào. Nếu họ làm như vậy, họ không tương thích với chắc chắn và có lẽ bạn nên gửi vấn đề với thư viện / nhà cung cấp. Ngoài ra, VM rẽ nhánh cũng có thể bị sập vì một số lý do, điều này cũng có thể khiến vấn đề này xảy ra. Tìm các tệp "hs_err *" cổ điển cho biết VM gặp sự cố hoặc kiểm tra đầu ra nhật ký từ việc chạy maven khi các bài kiểm tra thực thi. Một số đầu ra "bất thường" từ các quá trình sụp đổ có thể được đổ vào bàn điều khiển / nhật ký. Nếu điều này xảy ra trên môi trường CI và chỉ sau một thời gian chạy, rất có thể bộ công cụ kiểm tra của bạn bị rò rỉ một số loại tài nguyên cấp hệ điều hành khiến mọi thứ trở nên tồi tệ hơn cho mỗi lần chạy. Các công cụ giám sát cấp độ os thường xuyên có thể cung cấp cho bạn một số chỉ dẫn.


9

Đã phải đối mặt với cùng một vấn đề, java 8 trên Ubuntu

sau đó bắt gặp https://stackoverflow.com/a/53016532/1676516

Có vẻ như một lỗi gần đây trong phiên bản plugin chắc chắn 2.22.1 với java 8 https://issues.apache.org/jira/browse/SUREFIRE-1588

theo cách giải quyết được đề xuất thông qua cài đặt mvn cục bộ ~/.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
Một bổ sung đơn giản của phiên bản 3.0.0-M1 mới hơn (ví dụ) đã giải quyết vấn đề.
Galigator

6

Tôi đã có cùng một vấn đề ngày hôm nay và đối với tôi, vấn đề thực sự đã được báo cáo thêm trong nhật ký với tin nhắn Cannot use a threadCount parameter less than 1; 1 > 0. Khi thêm <threadCount>1</threadCount>vào cấu hình Surefire-plugin, lỗi khác đã biến mất.

Cấu hình plugin đầy đủ:
        <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>

... Và vâng, tôi đang sử dụng cả Junit và testng trong khung kiểm tra này vì lý do tương thích ngược.


6

Có vấn đề tương tự khi chạy lệnh mvn với plugin Jacoco trên JDK 1.8.0_ 65

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

Có một lỗi trong JDK https://bugs.openjdk.java.net/browse/JDK-8081379

Và giải pháp là chạy mvn cài đặt sạch với param -XX: -UseLoopPredicate

Hoặc chỉ thực hiện cập nhật lên JDK (Tôi nghĩ rằng phiên bản nhỏ hơn mới hoạt động)


6

Tắt useSystemClassLoader của maven-Surefile-plugin sẽ giúp

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

1
Đây là cái đã sửa nó cho tôi. Tôi đã xây dựng maven thông qua tạo tác trên một hình ảnh docker được xếp hàng từ gitlab. Thật khó để thiết lập đại diện hoạt động và sau khi thử rất nhiều tùy chọn cho cài đặt chắc chắn, cài đặt này đã sửa nó với phiên bản 2.22.0.
Richard Bown

1
phải thêm tùy chọn này cho mọi công việc maven trong Gitlab CI và không biết tại sao.
cljk

5

Nếu bất cứ ai đang bao gồm một đối số argLine tùy chỉnh, bạn phải xem xét lại bởi vì đó có thể là nguồn gốc của các vấn đề của bạn với việc cấp phát bộ nhớ.

Ví dụ (tôi đã từng có):

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

Bây giờ tôi sử dụng các giá trị được chỉ định cứng:

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

Vì bất kỳ lý do gì, các Ứng dụng tích hợp với Surefire như Jacoco, không yêu cầu đủ bộ nhớ để cùng tồn tại với thử nghiệm xảy ra khi xây dựng.


5

Tôi cũng gặp phải vấn đề này trong một thùng chứa Jenkins Docker (đã thử jenkins: lts, ​​jenkins, jenkins: slim và jenkins: slim-lts. Tôi không muốn đi qua tất cả các kho lưu trữ và cập nhật pom cho mỗi dự án, vì vậy tôi chỉ cần thêm vô hiệu hóaClassPathURLCheck vào lệnh gọi dòng lệnh maven:

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

5

Sử dụng maven Surefire 2.21.0 Tôi đã giải quyết vấn đề thay đổi reuseForksgiá trị tùy chọn từ true thành 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>

Toàn bộ phần cấu hình của tôi được xây dựng trông giống như:

<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

Bạn cần kiểm tra xem máy của bạn là 64 bit hay 32 bit. Nếu máy của bạn là 32 bit thì đối số bộ nhớ của bạn không được vượt quá 4096, thậm chí nó phải dưới 4 GB. nhưng nếu máy của bạn là 64 bit thì hãy cài đặt Java 64 bit và cung cấp JAVA_HOME trong mvn.bat để chỉ cài đặt java 64 bit.


4

Tôi đã gặp một trường hợp khi không có câu trả lời nào được cung cấp giải quyết vấn đề. Đó là với một ứng dụng cũ được sử dụng log4j và SLF4J / logback.

Tình huống trước đó: các clean testbản dựng đã chạy tốt khi được khởi chạy từ bên trong Eclipse, nhưng khi được khởi chạy trong dòng lệnh, đã xảy ra lỗi này. CI xây dựng trên CircleCI cũng chạy tốt.

Những gì tôi đã làm: ngoài dự đoán thuần túy, là cấu hình đúng logback-test.xmlvà quay số mức độ dài của việc ghi nhật ký. Xin thưa, tôi không còn gặp phải lỗi này nữa và giờ tôi có thể xây dựng dự án (cũng như mô-đun xảy ra lỗi này) từ dòng lệnh.

Quan điểm của tôi là cách các khung ghi nhật ký được sử dụng hoặc cấu hình có thể là một lời giải thích khác .

Có thực sự là một cuộc xung đột giữa log4j và logback? Hay chỉ là khối lượng ghi nhật ký cao được tạo ra bởi các thử nghiệm bằng cách nào đó đã tràn bộ đệm dòng lệnh? Tôi không biết. Nó vẫn là một bí ẩn đối với tôi.


Nâng cao bởi vì điều này thực sự có thể giải quyết / tránh / vượt qua vấn đề. Tôi đang sử dụng slf4j và sl4j-Simple trên Windows và đầu ra chậm chạp cũng chỉ cho tôi theo hướng này. Đặt System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "cảnh báo"); đã lừa Việc hạ cấp maven-Surefire-plugin xuống 2.18.1 cũng hoạt động.
marcus

4

Tôi gặp vấn đề tương tự sau khi nâng cấp lên java 12, đối với tôi, giải pháp là cập nhật phiên bản jacoco <jacoco.version>0.8.3</jacoco.version>


Đây thực sự là vấn đề tôi gặp phải với dự án của mình. Quá tệ câu trả lời này không thể nhìn thấy ...
OmriYaHoo

4

phiên bản 2.22.2 có vấn đề thực sự với các JVM rẽ nhánh. Sử dụng phiên bản 2.20 - nó hoạt động như một bùa mê!


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

Hmm, điều này thực sự có ích!
Zhen Zhang

Vâng, v2.22.2có một vấn đề với maven:3.6-jdk-8-alpine. Rất khó chịu!
KimchiMan

3

Gần đây tôi đã mắc phải lỗi này trong khi xây dựng các ứng dụng jar được đóng gói của mình bằng Tre:

org.apache.maven.surefire.booter.SurefireBooterForkException: VM rẽ nhánh chấm dứt mà không nói lời tạm biệt

Sau nhiều giờ nghiên cứu tôi đã sửa nó. Và tôi nghĩ rằng nó sẽ hữu ích để chia sẻ giải pháp của tôi ở đây.

Vì vậy, lỗi xảy ra mỗi khi tre chạy mvn clean packagelệnh cho các ứng dụng java trong các thùng chứa docker. Tôi không phải là chuyên gia về Maven nhưng rắc rối nằm ở các plugin Surefire và Junit4 có trong spring-boot dưới dạng phụ thuộc maven.

Để khắc phục, bạn cần thay thế Junit4 cho Junit5 và ghi đè plugin Surefire trong bạn pom.xml.

1. Loại trừ chèn phụ thuộc mùa xuân khởi động:

<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. Thêm phụ thuộc Junit5 mới:

<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. Chèn plugin mới bên trong phần bổ trợ

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

Thế là đủ để sửa chữa các công trình tre. Đừng quên chuyển đổi tất cả các bài kiểm tra Junit4 để hỗ trợ Junit5.


2

Đặt cái này trong pom.xml làm việc cho tôi. Nhưng bạn nên kiểm tra tài liệu cho các cách giải quyết khác 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 rẽ nhánh được sử dụng trong thử nghiệm sắp hết bộ nhớ. Giải pháp sẽ là vô hiệu hóa việc tách JVM và chạy các thử nghiệm trên JVM chính để đảm bảo bạn có đủ bộ nhớ hoặc truyền các đối số để tăng bộ nhớ của JVM rẽ nhánh

Kiểm tra các giải pháp trong câu trả lời này



1

Giải pháp của tôi cho vấn đề này là Đóng trình duyệt chrome chết tiệt đang làm nghẹt bộ nhớ máy tính của tôi


1

Bạn có thể đặt tùy chọn java

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install


1

Trên Windows (OpenJDK11, Maven 3.6.0, SUREFIRE 3.0.0-M1) Tôi có nguyên nhân gốc rễ đó:

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

và giải quyết bằng cách tăng kích thước tệp hoán trang, ví dụ như thế này .


Trên Linux (4.4.0-145-generic, amd64), đã đổi từ Oracle JRE 8 thành AdoptOpenJDK_8u202b08 cho một công việc Jenkins và nó bắt đầu tạo ra lỗi "fork": - "Thực hiện kiểm tra mặc định của mục tiêu org.apache.maven.plugins : maven-Surefire-plugin: 2.19.1: kiểm tra thất bại: VM rẽ nhánh bị chấm dứt mà không nói lời tạm biệt. Sự cố VM hoặc System.exit được gọi là? " - Thay đổi trở lại Oracle JRE và lỗi đã dừng. Đây là công việc duy nhất (khoảng 300) của chúng tôi có vấn đề này. May mắn thay, nó chỉ là một dự án nội bộ, không phải là một khách hàng có thể giao được, chúng tôi có thể giữ nó trên Sun / Oracle JRE.
Robert

1

đã thử tất cả ở trên, không làm việc. giải pháp dưới đây làm việc cho tôi:

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


Phiên bản plugin chính xác này đã giúp tôi hiểu. Nhân tiện, cấu hình của tôi là: 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"
tworogue

1

Tôi đã có cùng một vấn đề và giải quyết bằng cách sử dụng Java 8 từ Oracle thay vì Java 10 từ Openjdk


1

Tôi đã thử tất cả các giải pháp được cung cấp (forking, systemloader, bộ nhớ nhiều hơn, v.v.), không có gì hoạt động.

Môi trường : Việc xây dựng thất bại trong môi trường gitlab ci, chạy bản dựng bên trong một container docker.

Giải pháp : Chúng tôi đã sử dụng Surefireplugin trong phiên bản 2.20.1 và nâng cấp lên 2.21.0 trở lên (chúng tôi đã sử dụng 2.22.1) đã khắc phục sự cố.

Nguyên nhân : SUREFIRE-1422 - chắc chắn sử dụng lệnh ps, không có sẵn trong môi trường docker và dẫn đến "sự cố". Vấn đề này được khắc phục trong 2.21.0 trở lên.

Nhờ câu trả lời này từ một câu hỏi khác: https://stackoverflow.com/a/50568662/2970422


1

Tôi cũng gặp phải vấn đề này trên MacOS trong khi gỡ lỗi mã kiểm tra Selenium từ xa trên cổng 5005. Vấn đề hóa ra là do một JVM chắc chắn còn sót lại vẫn đang chạy. Nhật ký đầu ra cho thiết bị đầu cuối IDE Eclipse không hiển thị vấn đề cơ bản là Địa chỉ đã được sử dụng . Thông báo nhật ký chỉ được hiển thị khi tôi chạy cùng một lệnh trong thiết bị đầu cuối MacOS mà Eclipse thực sự đang cố chạy:

/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

Giết cá thể JVM giả mạo (tìm tên quy trình java trong Activity Monitor) đã khắc phục sự cố. Nhân tiện, tôi đang chạy plugin Surefire phiên bản 2.21.0 mà không gặp vấn đề gì với open jdk 8 (v1.8.0_212). Lưu ý rằng tất cả các đường dẫn sẽ dành riêng cho môi trường xây dựng của bạn và có thể là cổng (địa chỉ = 5005).


1

Tôi đã phải đối mặt với cùng một vấn đề khi chạy thử nghiệm đơn vị bằng cách sử dụng thử nghiệm maven. Đã thử thay đổi các phiên bản chắc chắn nhưng nó không hoạt động. Cuối cùng quản lý để giải quyết như sau: EARLIER: (khi sự cố xảy ra): javac là từ jdk 1.8 java đã trỏ đến java bin từ jdk 1.11 HIỆN TẠI: (khi vấn đề đã được giải quyết): cả javac & java đều đang chỉ vào thùng từ jdk 1.8

Trân trọng Teja.


0

Tôi đã gặp lỗi này sau khi một biến thành viên tĩnh trong lớp thử nghiệm của tôi được gọi là phương thức để tạo một đối tượng (được sử dụng trong các trường hợp thử nghiệm trong toàn lớp) và phương thức này gây ra ngoại lệ.

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

Một số sửa chữa bao gồm tái tạo đối tượng bên trong mỗi trường hợp thử nghiệm và nắm bắt bất kỳ trường hợp ngoại lệ nào cho phù hợp. Hoặc bằng cách khởi tạo đối tượng bên trong phương thức @B BeforeTest và đảm bảo rằng nó được xây dựng đúng cách.


0

Trong trường hợp của tôi, vấn đề liên quan đến đường dẫn không gian làm việc dài đến mức đó. Vì vậy, tôi đã thực hiện tái cấu trúc đường dẫn và điều này đã giải quyết vấn đề cho tôi.


Đó có phải là trên một máy tính windows?
hithwen

Vâng, nó đang chạy trong Windows.
thiago-devel

Làm thế nào bạn tìm thấy điều đó?
dzieciou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.