VM bercabang itu berakhir tanpa pamit. VM crash atau System.exit disebut

192

Tolong bantu saya untuk mengatasi masalah ini. Saya tidak benar-benar mengerti apa arti kesalahan dalam log.

[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
terkejut
sumber
7
Harap jalankan kembali Maven dengan -e dan -X seperti yang disarankan oleh output, dan rekatkan apa yang memberi Anda. Juga, apakah Anda membangun kode Anda sendiri atau perpustakaan yang ada? Jika Anda membuat kode sendiri, apakah Anda memanggil System.exit (int) di mana saja? Jika Anda sedang membangun perpustakaan yang ada, dari mana Anda mendapatkan sumbernya?
Dylon
@Dylon Edwards: Ini adalah kode sumber yang ada, proyek OpenDayLight untuk implementasi SDN.
astack
Skenario terakhir yang saya miliki yang mereproduksi masalah adalah ketika saya menjalankan suite uji dari file xml. Jika file xml mendefinisikan kelas yang tidak ada lagi, atau merujuk ke nama lama yang sepenuhnya memenuhi syarat kelas telah dipindahkan, maka JVM gagal memuat kelas. Ini menghasilkan pesan aneh yang Anda amati. Melihat lebih dekat ke stack-trace apa pun dapat membantu Anda mengidentifikasi masalah seperti itu, tidak perlu melewati sakelar -e atau -X dalam hal ini.
Ivaylo Slavov
@astack, apa yang keluar sebagai solusi untuk ini? bisakah Anda menandai jawaban atau menulis jawaban Anda sendiri.
Naman

Jawaban:

122

Saya memiliki masalah yang sama dan diselesaikan dengan menambahkan:

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

Seluruh elemen plugin adalah:

<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>
Xiaohuo
sumber
7
+1 Saya menggunakan cuplikan ini, kata demi kata, dan itu memperbaiki masalah saya dengan Travis-CI. Kami tidak mendapatkan ini di salah satu stasiun kerja pengembang kami.
StartupGuy
7
Di atas tidak memperbaiki masalah bagi saya. Masalah ini 'mungkin' terjadi ketika salah satu dependensi (jar dll) di .m2rusak. Menghapus ~ / .m2 / repositori rm -rf ~/.m2/repositorydan kemudian mvn installmenyelesaikannya untuk saya.
ch4nd4n
2
Salin dan tempel ini ke file pom saya dan itu berfungsi seperti pesona, terima kasih
Flaom
8
OpenJDK 64-Bit Server VM peringatan: opsi mengabaikan MaxPermSize = 256m; dukungan telah dihapus pada 8.0
Julien
2
Bisakah seseorang menjelaskan apa yang sebenarnya dilakukannya dan efek apa yang dimilikinya?
borgmater
72

Dalam kasus saya masalah ini terkait dengan keluaran log yang terlalu lama ke konsol IntelliJ IDEA (OS windows 10).

Perintah:

mvn clean install

Perintah ini memecahkan masalah bagi saya:

mvn clean install > log-file.log
Mikhail
sumber
Log yang terlalu lama adalah masalah bagi saya juga! Mengarahkan kembali ke file log tidak membantu. Mengubah beberapa pernyataan logging yang paling umum, dari info ke debug, menyelesaikan masalah
RvPr
7
terlalu banyak logging adalah masalah nyata dalam kasus saya !!
Changwon Choe
1
Jangan lupa aliran kesalahan juga: mvn clean test 2> err.txt 1> out.txt atau mvn clean test> out.txt 2> & 1 atau mvn clean test 2> & 1 | tee out.txt Saat mengarahkan, Anda dapat menonton output di konsol lain dengan lebih sedikit + F out.txt
radzimir
1
Bagi saya, beralih dari windows cmd ke konsol Intellij menyelesaikannya.
Brokoli
3
Memang, pengalihan ke file log menyelesaikan masalah ini.
horizon7
41

Saya memiliki masalah yang sangat mirip ( Maven build dan maven-failafe-plugin - VM bercabang dihentikan tanpa mengucapkan selamat tinggal dengan benar ) dan menemukan tiga solusi yang bekerja untuk saya:

Deskripsi masalah

Masalahnya dengan maven plugin maven-surefire-plugin hanya di versi 2.20.1 dan 2.21.0. Saya memeriksa dan Anda menggunakan versi 2.20.1.

Solusi 1

Tingkatkan versi plugin ke 2.22.0 . Tambahkan di pom.xml :

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

Solusi 2

Turunkan versi plugin ke 2.20 . Tambahkan di pom.xml :

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

Solusi 3

Gunakan konfigurasi plugin testFailureIgnore . Tambahkan di pom.xml :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <testFailureIgnore>true</testFailureIgnore>
  </configuration>
</plugin>
Michał Orliński
sumber
Bagi saya kombinasi ini bekerja berkat: <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-surefire-plugin </artifactId> <version> 2.22.1 </version> <configuration> < testFailureIgnore> true </testFailureIgnore> </configuration> </plugin>
Abhishek
Terima kasih untuk ini, menggunakan maven:3.6.0-jdk-10Docker gambar dan upgrade ke versi 3.0.0-M3dari maven-surefire-plugindiselesaikan bagi saya juga.
danialk
20
Sehubungan dengan Solusi 3: Bisakah kita benar-benar mengatakan bahwa mengabaikan kegagalan tes adalah solusi? Apa gunanya menjalani tes jika hasilnya tidak ada artinya?
Ulukai
Saya baru saja memutakhirkan maven-surefire-plugin ke 2.22.2 dan berfungsi dengan baik!
Krzysztof Walczewski
Ya! Meng-upgrade ke v2.22.2 dari surefire menyelesaikannya untuk saya juga. Terima kasih!
Migs
32

Pada hari ini (30/10/2018), kami melihat bangunan kami rusak di Jenkins dengan kesalahan ini.

Kesalahannya agak menyesatkan dan harus melihat keluaran dump target/surefire-reports/ untuk melihat pesan kesalahan berikut:

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

Itu membawa saya ke posting SO berikut yang menyebutkan bug yang mungkin ada di OpenJDK 181: Maven pasti tidak dapat menemukan kelas ForkedBooter

Salah satu perbaikan di pos itu memecahkan masalah saya. Untuk lebih spesifik, saya menggunakan salah satu dari ini:

  1. Beralih dari bangunan di wadah buruh pelabuhan maven:3.5.4-jdk-8kemaven:3.5.4-jdk-8-alpine
  2. Mengganti pemuat kelas Spring Boot yang dirinci di sini: https://stackoverflow.com/a/50661649/1228408
majikman
sumber
1
Terima kasih. Beralih dari 1.8.0_161-b12 ke 11.0.1 + 13 membantu dalam kasus kami.
Karussell
1
Ini adalah masalah persis yang saya hadapi pada Jenkins saya dan sudah diselesaikan sekarang. Terima kasih.
Vighnesh Pai
OP memiliki pesan kesalahan lain:The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
PetroCliff
1
@PetroCliff Saya mengakui bahwa itu adalah kesalahan yang juga saya dapatkan ketika saya berkata "kami melihat bangunan kami rusak di Jenkins dengan kesalahan ini ". Saya kemudian melanjutkan untuk menjelaskan bahwa kesalahan itu menyesatkan dan bahwa kesalahan sebenarnya ada di surefire-reports.
majikman
25

Bagian dari FAQ Surefire ini dapat membantu Anda:

Surefire gagal dengan pesan "VM bercabang dihentikan tanpa mengucapkan selamat tinggal dengan benar"

Surefire tidak mendukung tes atau pustaka yang dirujuk yang memanggil System.exit () kapan saja. Jika mereka melakukannya, mereka tidak kompatibel dengan ayal dan Anda mungkin harus mengajukan masalah dengan perpustakaan / vendor. Atau VM bercabang juga bisa macet karena sejumlah alasan, yang juga dapat membuat masalah ini terjadi. Cari file "hs_err *" klasik yang mengindikasikan VM lumpuh atau periksa output log dari menjalankan maven saat tes dijalankan. Beberapa output "luar biasa" dari proses mogok mungkin dibuang ke konsol / log. Jika ini terjadi pada lingkungan CI dan hanya setelah beberapa waktu berjalan ada kesempatan yang adil test suite Anda bocor semacam sumber daya tingkat OS yang membuat segalanya lebih buruk untuk setiap menjalankan. Alat pemantauan os-level reguler dapat memberi Anda beberapa indikasi.

agudian
sumber
9

Sedang menghadapi masalah yang sama, java 8 di ubuntu

kemudian datang di https://stackoverflow.com/a/53016532/1676516

Tampaknya bug baru-baru ini dalam plugin plugin ayal versi 2.22.1 dengan java 8 https://issues.apache.org/jira/browse/SUREFIRE-1588

mengikuti solusi yang disarankan melalui pengaturan mvn lokal ~/.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>
Kata Mahmoud
sumber
1
Tambahan sederhana dari versi 3.0.0-M1 yang lebih baru (misalnya) telah menyelesaikan masalah.
Galigator
6

Saya memiliki masalah yang sama hari ini dan bagi saya masalah sebenarnya dilaporkan lebih lanjut di log dengan pesan Cannot use a threadCount parameter less than 1; 1 > 0. Saat menambahkan <threadCount>1</threadCount>konfigurasi yakinfire-plugin kesalahan lainnya menghilang.

Konfigurasi plugin lengkap:
        <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>

... dan ya, saya menggunakan junit dan testng dalam kerangka pengujian ini untuk alasan kompatibilitas ke belakang.

javabeangrinder
sumber
6

Punya masalah serupa ketika menjalankan perintah mvn dengan plugin Jacoco pada 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?

Ada bug di JDK https://bugs.openjdk.java.net/browse/JDK-8081379

Dan solusinya adalah menjalankan instalasi bersih mvn dengan param -XX: -UseLoopPredicate

Atau cukup buat pembaruan ke JDK (saya pikir versi minor yang baru berfungsi)

andreyro
sumber
6

Matikan useSystemClassLoader dari maven-surefile-plugin akan membantu

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
        </plugin>
Loi Cao
sumber
1
Ini yang diperbaiki untuk saya. Saya telah membangun pakar melalui artifactory pada gambar buruh pelabuhan antri dari gitlab. Sangat sulit untuk membuat pengaturan yang representatif bekerja dan setelah mencoba banyak opsi untuk pengaturan yang pasti yang satu ini memperbaikinya dengan versi 2.22.0.
Richard Bown
1
harus menambahkan opsi ini untuk setiap pekerjaan pakar di Gitlab CI dan tidak tahu mengapa.
CLJK
5

Jika ada yang menyertakan argumen argLine khusus, Anda harus mempertimbangkan kembali karena kemungkinan sumber masalah Anda dengan alokasi memori.

Sebagai Contoh (saya dulu punya):

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

Sekarang saya menggunakan nilai yang ditentukan:

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

Untuk alasan apa pun, Aplikasi yang berintegrasi dengan Surefire seperti Jacoco, jangan meminta memori yang cukup untuk hidup berdampingan dengan pengujian yang terjadi pada waktu pembuatan.

Chad Van De Hey
sumber
5

Saya mengalami masalah ini juga dalam wadah Docker Jenkins (mencoba jenkins: lts, ​​jenkins, jenkins: slim dan jenkins: slim-lts. Saya tidak ingin melalui semua repositori dan memperbarui pom untuk setiap proyek, jadi saya baru saja menambahkan disableClassPathURLCheck ke panggilan baris perintah pakar:

mvn test -DargLine="-Djdk.net.URLClassPath.disableClassPathURLCheck=true"
Kevin Dubois
sumber
5

Menggunakan maven surefire 2.21.0 saya memecahkan masalah mengubah nilai reuseForksopsi dari true ke 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>

Seluruh bagian konfigurasi di bawah build saya tampak seperti:

<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>
Csaki Istvan
sumber
4

Anda perlu memeriksa apakah mesin Anda 64 bit atau 32bit. Jika mesin Anda 32 bit maka argumen memori Anda tidak boleh melebihi 4096, bahkan itu harus di bawah 4 GB. tetapi jika mesin Anda 64 bit, instal Java 64 bit dan berikan JAVA_HOME di mvn.bat yang mengarah ke instalasi java 64 bit.

Naresh Singh
sumber
4

Saya telah menemukan sebuah kasus ketika tidak ada jawaban yang diberikan yang menyelesaikan masalah. Itu dengan aplikasi warisan yang kebetulan menggunakan log4j dan SLF4J / logback.

Situasi sebelumnya: clean testbuild berjalan dengan baik ketika diluncurkan dari dalam Eclipse, tetapi ketika diluncurkan di baris perintah, kesalahan ini terjadi. CI dibangun di atas CircleCI juga berjalan dengan baik.

Apa yang saya lakukan: dari tebakan murni, adalah mengkonfigurasi yang tepat logback-test.xmldan dial ke bawah verbosity logging. Lihatlah, saya tidak lagi mengalami kesalahan ini dan sekarang saya dapat membangun proyek (serta modul di mana kesalahan ini terjadi) dari baris perintah.

Maksud saya adalah cara bagaimana kerangka kerja logging digunakan atau dikonfigurasi dapat menjadi penjelasan lain .

Apakah ini benar-benar konflik antara log4j dan logback? Atau apakah itu hanya volume logging yang tinggi yang dihasilkan oleh tes entah bagaimana meluap buffer baris perintah? Saya tidak tahu Itu tetap menjadi misteri bagi saya.

AbVog
sumber
Upvoting karena ini benar-benar dapat menyelesaikan / menghindari / menghindari masalah. Saya menggunakan slf4j dan sl4j-simple pada Windows dan output yang lambat menunjuk saya ke arah ini juga. Pengaturan System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "warn" "); melakukan trik. Menurunkan versi maven-surefire-plugin ke 2.18.1 juga berfungsi.
marcus
4

Saya menghadapi masalah serupa setelah memutakhirkan ke java 12, bagi saya solusinya adalah memperbarui versi jacoco <jacoco.version>0.8.3</jacoco.version>

Max Vorontsov
sumber
Ini memang masalah yang saya alami dengan proyek saya. Sayang sekali jawaban ini tidak terlihat ...
OmriYaHoo
4

versi 2.22.2 memiliki masalah nyata dengan JVM bercabang dua. Gunakan versi 2.20 - itu berfungsi seperti pesona!


<groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
Alex
sumber
Hmm, ini sebenarnya membantu!
Zhen Zhang
Ya, v2.22.2memiliki masalah dengan maven:3.6-jdk-8-alpine. Sangat mengganggu!
KimchiMan
3

Saya baru-baru ini terjebak dengan kesalahan ini saat membangun aplikasi jar kemas dengan Bamboo:

org.apache.maven.surefire.booter.SurefireBooterForkException: VM bercabang berakhir tanpa mengucapkan selamat tinggal dengan benar

Setelah berjam-jam meneliti saya memperbaikinya. Dan saya pikir akan bermanfaat untuk membagikan solusi saya di sini.

Jadi kesalahan terjadi setiap kali ketika bambu menjalankan mvn clean packageperintah untuk aplikasi java di wadah buruh pelabuhan. Saya bukan pakar Maven tetapi masalahnya ada di plugin Surefire dan Junit4 termasuk dalam pegas-boot sebagai ketergantungan maven.

Untuk memperbaikinya Anda perlu mengganti Junit4 untuk Junit5 dan menimpa plugin Surefire di Anda pom.xml.

1.Inside spring boot dependency masukkan pengecualian:

<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. Tambahkan dependensi Junit5 baru:

<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. Masukkan plugin baru di dalam bagian plugins

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

Itu sudah cukup untuk memperbaiki bangunan bambu. Jangan lupa juga ubah semua tes Junit4 untuk mendukung Junit5.

nyata
sumber
2

Pengaturan ini di pom.xml bekerja untuk saya. Tetapi Anda harus memeriksa dokumentasi untuk solusi lain 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>
Gryffe
sumber
2

JVM bercabang yang digunakan dalam tes kehabisan memori. Solusinya adalah dengan menonaktifkan forking JVM dan menjalankan tes pada JVM utama untuk memastikan Anda memiliki memori yang cukup atau untuk melewati argumen untuk meningkatkan memori dari JVM bercabang dua.

Lihatlah solusi dalam jawaban ini

Muji
sumber
1

Resolusi saya untuk masalah ini adalah untuk Tutup browser krom sialan yang tersedak memori komputer saya 🙄

Anand Rockzz
sumber
1

Anda dapat mengatur opsi java

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install

abimanyu
sumber
1

Pada Windows (OpenJDK11, Maven 3.6.0, SUREFIRE 3.0.0-M1) Saya mendapatkan root itu:

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

dan diselesaikan dengan meningkatkan ukuran file paging, misalnya seperti ini .

Radoslav Ivanov
sumber
Di Linux (4.4.0-145-generic, amd64), berubah dari Oracle JRE 8 menjadi AdoptOpenJDK_8u202b08 untuk pekerjaan Jenkins dan mulai menghasilkan kesalahan "garpu": - "Eksekusi uji-standar sasaran org.apache.maven.plugins : maven-surefire-plugin: 2.19.1: test gagal: VM bercabang berakhir tanpa mengucapkan selamat tinggal. VM crash atau System.exit dipanggil? " - Berubah kembali ke Oracle JRE dan kesalahan berhenti. Ini adalah satu-satunya pekerjaan (kami sekitar 300) untuk memiliki masalah ini. Untungnya ini hanya proyek internal, bukan co klien yang dapat dikirim, kita dapat menyimpannya di Sun / Oracle JRE.
Robert
1

mencoba semua di atas, tidak berhasil. solusi di bawah ini berfungsi untuk saya:

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

Yuebing Cao
sumber
Versi plugin yang tepat ini membuat saya sedih. Konfigurasi saya, omong-omong, adalah: 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

Saya memiliki masalah yang sama dan diselesaikan dengan menggunakan Java 8 dari Oracle bukannya Java 10 dari Openjdk

Francesco Borzi
sumber
1

Saya mencoba semua solusi yang disediakan (forking, systemloader, lebih banyak memori dll.), Tidak ada yang berhasil.

Lingkungan : Bangunan gagal di lingkungan gitlab ci, menjalankan pembangunan di dalam wadah buruh pelabuhan.

Solusi : Kami menggunakan surefireplugin di versi 2.20.1 dan meningkatkan ke 2.21.0 atau lebih tinggi (kami menggunakan 2.22.1) memperbaiki masalah ini.

Penyebab : SUREFIRE-1422 - ayal menggunakan perintah ps, yang tidak tersedia di lingkungan buruh pelabuhan dan menyebabkan "crash". Masalah ini diperbaiki pada 2.21.0 atau lebih tinggi.

Berkat jawaban ini dari pertanyaan lain: https://stackoverflow.com/a/50568662/2970422

Pelawak
sumber
1

Saya mengalami masalah ini juga pada MacOS sementara debugging jarak jauh kode uji Selenium pada port 5005. Masalahnya ternyata disebabkan oleh sisa-sisa-forked-JVM yang tetap berjalan. Keluaran log ke terminal Eclipse IDE tidak menunjukkan masalah mendasar yang sudah digunakan Alamat . Pesan log hanya ditampilkan ketika saya menjalankan perintah yang sama di terminal MacOS yang sebenarnya coba dijalankan oleh Eclipse:

/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

Membunuh instance JVM yang nakal (mencari nama proses java di Monitor Aktivitas) memperbaiki masalah ini. Ngomong-ngomong, saya menjalankan plugin pluginfire 2.2.1.0 tanpa masalah dengan open jdk 8 (v1.8.0_212). Perhatikan bahwa semua jalur akan spesifik untuk lingkungan build Anda dan mungkin port (address = 5005).

Gregg Leichtman
sumber
1

Saya menghadapi masalah yang sama ketika menjalankan unit test menggunakan uji pakar. Sudah mencoba mengubah versi pasti tetapi tidak berhasil. Akhirnya berhasil menyelesaikan sebagai berikut: EARLIER: (ketika masalah terjadi): javac berasal dari jdk 1.8 java menunjuk ke java bin dari jdk 1.11 CURRENT: (ketika masalah terselesaikan): baik javac & java menunjuk ke sampah dari jdk 1.8

Salam Teja.

teja
sumber
0

Saya mengalami kesalahan ini setelah variabel anggota statis di kelas pengujian saya disebut metode untuk membuat objek (yang digunakan dalam kasus uji di seluruh kelas), dan metode ini menyebabkan pengecualian.

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

Beberapa perbaikan termasuk menciptakan kembali objek di dalam setiap test case dan menangkap setiap pengecualian yang sesuai. Atau dengan menginisialisasi objek di dalam metode @BeforeTest dan memastikan bahwa itu dibangun dengan benar.

pengguna2812481
sumber
0

Dalam kasus saya, masalah ini terkait dengan jalur ruang kerja yang terlalu panjang. Jadi saya melakukan refactoring jalur dan ini memecahkan masalah bagi saya.

thiago-devel
sumber
Apakah itu pada mesin windows?
sampai
Ya, itu berjalan di Windows.
thiago-devel
Bagaimana Anda menemukan itu?
dzieciou