Çatallı VM uygun şekilde veda etmeden sona erdi. VM çökmesi veya System.exit çağrıldı


192

Lütfen bu sorunu çözmeme yardımcı olun. Günlükteki hatanın ne anlama geldiğini tam olarak anlamıyorum.

[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
Lütfen Maven'i çıktı önerdiği gibi -e ve -X ile yeniden çalıştırın ve size verdiklerini yapıştırın. Ayrıca, kendi kodunuzu veya mevcut bir kütüphanenizi mi oluşturuyorsunuz? Kendi kodunuzu oluşturuyorsanız, System.exit (int) 'yi herhangi bir yere mi çağırıyorsunuz? Mevcut bir kütüphane oluşturuyorsanız, kaynağı nereden aldınız?
Dylon

@Dylon Edwards: SDN uygulaması için mevcut bir kaynak kodu olan OpenDayLight projesidir.
astack

Sorunu çoğaltan son bir senaryo, test paketlerini xml dosyalarından çalıştırdığım zamandı. Bir xml dosyasının artık var olmayan bir sınıfı tanımlaması veya bir sınıfın eski tam adını taşıyan bir taşınması durumunda, JVM sınıfı yükleyemez. Bu, gözlemlediğiniz garip mesajla sonuçlanır. Herhangi bir yığın izine daha yakından bakmak, bu tür sorunları tanımlamanıza yardımcı olabilir, bu durumda -e veya -X anahtarlarını geçirmeye gerek yoktur.
Ivaylo Slavov

@astack Bunun çözümü ne ortaya çıktı? Bir cevabı işaretleyebilir veya kendi cevabınızı yazabilir misiniz?
Naman

Yanıtlar:


122

Aynı sorunu vardı ve ekleyerek çözüldü:

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

Tüm eklenti öğesi:

<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 Bu pasajı, kelimesi kelimesine kullandım ve Travis-CI ile ilgili sorunumu çözdüm. Bunu, geliştiricimizin iş istasyonlarının hiçbirinde alamadık.
StartupGuy

7
Yukarıda benim için sorunu çözmedi. Bu sorun, bağımlılıklardan (jar vb.) Biri bozulduğunda ortaya çıkabilir .m2. ~ / .M2 / depo silinmesi rm -rf ~/.m2/repositorysonra ve mvn installbenim için çözüldü.
ch4nd4n

2
Kopyalayın ve pom
dosyama

8
OpenJDK 64-Bit Sunucu VM uyarısı: yoksayma seçeneği MaxPermSize = 256m; desteği 8.0
Julien

2
Birisi gerçekte ne yaptığını ve ne gibi etkileri olduğunu açıklayabilir mi?
borgmater

72

Benim durumumda sorun, IntelliJ IDEA konsoluna (OS windows 10) çok uzun günlük çıkışı ile ilgili.

Komut:

mvn clean install

Bu komut sorunu bana çözdü:

mvn clean install > log-file.log

Günlükleri çok uzun olmak benim için sorun oldu! Bir günlük dosyasına yeniden yönlendirmek yardımcı olmadı. En yaygın günlük deyimlerinin bazılarını, bilgilerden hata ayıklamaya değiştirmek, sorunu çözdü
RvPr

7
çok fazla günlük benim durumumda gerçek bir sorun oldu!
Changwon Choe

1
Hata akışını da unutmayın: mvn clean test 2> err.txt 1> out.txt veya mvn clean test> out.txt 2> & 1 veya mvn clean test 2> & 1 | tee out.txt Yönlendirirken, diğer konsolda daha az + F out.txt ile çıkış izleyebilirsiniz
radzimir

1
Benim için, windows cmd'den Intellij konsoluna geçmek bunu çözdü.
Brokoli

3
Gerçekten, günlük dosyasına yönlendirme bu sorunu çözer.
horizon7

41

Çok benzer bir sorunum var ( Maven build ve maven-failsafe-plugin - Çatallı VM düzgün veda etmeden sonlandırıldı ) ve benim için çalışan üç çözüm buldu:

Sorun Açıklaması

Sorun maven eklentisi maven-surefire-eklentisi sadece 2.20.1 ve 2.21.0 sürümlerinde. Kontrol ettim ve 2.20.1 sürümünü kullanıyorsunuz.

Çözüm 1

Eklenti sürümünü 2.22.0'a yükseltin . Pom.xml dosyasına ekleyin :

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

Çözüm 2

Eklenti sürümünü 2.20'ye düşürün . Pom.xml dosyasına ekleyin :

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

Çözüm 3

Eklenti yapılandırma testini kullan TestFailureIgnore . Pom.xml dosyasına ekleyin :

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

Benim için bu kombinasyon işe yaradı: <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-surefire-plugin </artifactId> <version> 2.22.1 </version> <configuration> < testFailureIgnore> true </testFailureIgnore> </configuration> </plugin>
Abhishek

Kullanarak Bunun için teşekkürler maven:3.6.0-jdk-10sürümüne Docker görüntü ve yükseltme 3.0.0-M3ait maven-surefire-pluginbenim için de çözüldü.
danialk

20
Çözüm 3 ile ilgili olarak: Test hatalarını görmezden gelmenin bir çözüm olduğunu söyleyebilir miyiz? Sonuçları anlamsızsa test yaptırmanın anlamı nedir?
Ulukai

Ben maven-surefire-eklentisini 2.22.2'ye yükselttim ve iyi çalışıyor!
Krzysztof Walczewski

Evet! Güzel ateşin v2.22.2 sürümüne yükseltmek de benim için çözdü. Teşekkürler!
Migs

32

Bugün itibarıyla (30.10.2018), bu hatayla Jenkins'teki yapılarımızın kırıldığını fark ettik.

Hata biraz yanıltıcıdır ve target/surefire-reports/ aşağıdaki hata mesajını görmek için dökümü çıktısına bakmak gerekir :

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

Bu beni OpenJDK 181'de olası bir hatadan söz eden aşağıdaki SO postasına götürüyor : Maven surefire ForkedBooter sınıfını bulamadı

Bu yazıdaki düzeltmelerden herhangi biri sorunumu çözdü. Spesifik olarak, bunlardan birini kullandım:

  1. Docker kap içinde inşa geçiş maven:3.5.4-jdk-8içinmaven:3.5.4-jdk-8-alpine
  2. Spring Boot'un sınıf yükleyicisini geçersiz kılmak burada detaylandırılmıştır: https://stackoverflow.com/a/50661649/1228408

1
Teşekkürler. 1.8.0_161-b12'den 11.0.1 + 13'e geçiş bizim durumumuzda yardımcı oldu.
Karussell

1
Jenkins'imde karşılaştığım sorun bu ve şimdi çözüldü. Teşekkürler.
Vighnesh Pai

OP'nin başka bir hata mesajı daha vardı:The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
PetroCliff

1
@PetroCliff Ben de " Bu hata ile Jenkins bizim yapıları kırma fark ettim" dediğimde de aldığım hata olduğunu kabul etti . Daha sonra hatanın yanıltıcı olduğunu ve gerçek hatanın olduğunu açıklamaya devam ettim surefire-reports.
majikman

25

Surefire SSS'nin bu bölümü size yardımcı olabilir:

Surefire, "Çatallı VM düzgün bir şekilde veda etmeden sonlandırıldı" mesajıyla başarısız oluyor

Surefire, hiçbir zaman System.exit () yöntemini çağıran testleri veya başvurulan kütüphaneleri desteklemez. Bunu yaparlarsa, emin ateşle uyumsuzdurlar ve muhtemelen kütüphane / satıcı ile bir sorun oluşturmalısınız. Alternatif olarak, çatallı VM de birkaç nedenden dolayı çökebilir ve bu da bu sorunun gerçekleşmesini sağlayabilir. VM'nin çöktüğünü belirten klasik "hs_err *" dosyalarını arayın veya testler yürütüldüğünde günlük çıktısının maven çalıştırılmasını inceleyin. Kilitlenme işlemlerinden bazı "olağanüstü" çıktılar konsola / günlüğe dökülebilir. Bu bir CI ortamında gerçekleşirse ve sadece bir süre çalıştıktan sonra, test paketinizin her çalışma için işleri daha da kötüleştiren bir tür OS düzeyinde kaynak sızdırması olasılığı yüksektir. Düzenli işletim sistemi düzeyinde izleme araçları size bazı göstergeler verebilir.


9

Sadece aynı sorunla karşı karşıyaydı, ubuntu üzerinde java 8

sonra https://stackoverflow.com/a/53016532/1676516

Java 8 https://issues.apache.org/jira/browse/SUREFIRE-1588 ile surefire eklentisi 2.22.1 sürümünde yeni bir hata gibi görünüyor.

yerel mvn ayarları aracılığıyla önerilen geçici çözümü takip etti ~/.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
Daha yeni bir sürüm 3.0.0-M1 (örneğin) basit bir eklenti sorunu çözdü.
Galigator

6

Bugün aynı sorunu yaşadım ve benim için asıl sorun, mesajla günlükte daha fazla rapor edildi Cannot use a threadCount parameter less than 1; 1 > 0 . Eklerken<threadCount>1</threadCount>Surefire-plugin yapılandırmasına diğer hata kayboldu.

Tam eklenti yapılandırması:
        <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>

... ve evet, geriye dönük uyumluluk nedeniyle bu test çerçevesinde hem junit hem de testng kullanıyorum.


6

JDK 1.8.0_ 65 üzerinde Jacoco eklentisi ile mvn komutu çalıştırırken benzer bir sorun vardı

[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'da bir hata oluştu https://bugs.openjdk.java.net/browse/JDK-8081379

Ve çözüm mvn clean install -XX parametresini kullanarak çalıştırmaktı : -UseLoopPredicate

Veya sadece JDK için bir güncelleme yapın (bence daha yeni küçük sürüm çalışıyor)


6

Maven-surefile-eklentisininSystemClassLoader yardımcı olacaktır

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

1
Benim için düzelten bu. Gitlab'dan kuyruğa giren bir docker görüntüsünde yapay olarak maven inşa ediyorum. Temsili bir kurulumun çalışmasını sağlamak zordu ve surefire ayarları için birçok seçenek denedikten sonra bu sürüm 2.22.0 ile düzeltildi.
Richard Bown

1
Gitlab CI'deki her maven işi için bu seçeneği eklemek zorundasınız ve neden olduğuna dair hiçbir fikriniz yok.
Ocak'ta

5

Herhangi biri özel bir argLine argümanı içeriyorsa, muhtemelen bellek ayırma ile ilgili sorunlarınızın kaynağı olduğu için yeniden düşünmelisiniz.

Örneğin (Eskiden sahiptim):

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

Şimdi sabit değerleri kullanıyorum:

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

Hangi nedenle olursa olsun, Jacoco gibi Surefire ile entegre olan Uygulamalar, derleme zamanında gerçekleşen testlerle bir arada bulunmak için yeterli bellek istemez.


5

Jenkins Docker konteynerinde de bu problemle karşılaştım. maven komut satırı çağrısına copyClassPathURLCheck ekledim:

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

5

2.21.0 değişiyorum sorunu çözüldü maven güzelliğinde kullanma reuseForksSeçenek değerinin true için 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>

Yapım altındaki tüm yapılandırma bölümüm şöyle görünüyordu:

<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

Makinenizin 64 bit mi yoksa 32 bit mi olduğunu kontrol etmeniz gerekir. Makineniz 32 bit ise, bellek argümanınız 4096'yı geçmemelidir, hatta 4 GB'nin altında olmalıdır. ancak makineniz 64 bit ise, Java 64 bit'i yükleyin ve jv 64.bat'ta java 64 bit kurulumuna işaret eden JAVA_HOME'u sağlayın.


4

Verilen cevapların hiçbiri sorunu çözmediği bir dava ile karşılaştım. Bu log4j ve SLF4J / logback kullanan eski bir uygulama ile oldu.

Önceki durum: clean testEclipse içinden başlatıldığında derlemeler iyi çalışıyordu, ancak komut satırında başlatıldığında bu hata oluştu. CircleCI üzerine kurulan CI de iyi çalıştı.

Ne yaptım: saf tahmin dışında, uygun bir yapılandırma logback-test.xml ve günlüklemenin ayrıntı düzeyini çevirmektir. Bakın, artık bu hatayı yaşamadım ve şimdi projeyi (ve bu hatanın oluştuğu modülün) komut satırından oluşturabilirim.

Demek istediğim, günlükleme çerçevelerinin kullanılma veya yapılandırılma biçiminin başka bir açıklama olması .

Gerçekten log4j ve logback arasında bir çakışma mıydı? Yoksa sadece testler tarafından üretilen yüksek hacimli günlük kaydı bir şekilde bir komut satırı arabelleğinden taştı mı? Bilmiyorum. Benim için bir gizem olmaya devam ediyor.


Upvoting çünkü bu gerçekten sorunu çözebilir / önleyebilir / ortadan kaldırabilir. Windows'da slf4j ve sl4j-simple kullanıyorum ve halsiz çıktı da bu yönde beni işaret etti. Ayar System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "uyar"); hile yaptı. Maaven-surefire-eklentisini 2.18.1'e düşürmek de işe yaradı.
marcus

4

Java 12'ye yükselttikten sonra benzer bir sorunla karşılaştım, benim için çözüm jacoco sürümünü güncellemekti <jacoco.version>0.8.3</jacoco.version>


Bu aslında projemde yaşadığım problemdi. Bu cevap çok kötü değil bu görünür değil ...
OmriYaHoo

4

sürüm 2.22.2 çatallı JVMs ile gerçek sorunları var. Sürüm 2.20 kullanın - bir cazibe gibi çalışır!


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

Hmm, bu gerçekten yardımcı oluyor!
Zhen Zhang

Evet, v2.22.2bir sorunu var maven:3.6-jdk-8-alpine. Çok can sıkıcı!
KimchiMan

3

Kısa süre önce bambu ile kaplanmış kavanoz uygulamalarımı oluştururken bu hatayla karşılaştım:

org.apache.maven.surefire.booter.SurefireBooterForkException: Çatallı VM düzgün bir şekilde veda etmeden sona erdi

Saatlerce süren bir araştırmadan sonra düzelttim. Çözümümü burada paylaşmanın yararlı olacağını düşündüm.

Bu nedenle, mvn clean packagedocker kaplarındaki java uygulamaları için bambu her komut çalıştırıldığında hata oluşur . Ben Maven uzmanı değilim ama sorun maven bağımlılığı olarak bahar önyükleme dahil Surefire ve Junit4 eklentileri oldu.

Bunu düzeltmek için Junit5 for Junit5'i değiştirmeniz ve Surefire eklentisini geçersiz kılmanız gerekir pom.xml.

1. iç bahar çizme bağımlılığı ekleme hariç:

<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. Yeni Junit5 bağımlılıkları ekleyin:

<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. Eklentiler bölümüne yeni eklenti ekleyin

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

Bambu yapılarını onarmak için bu yeterli olmalı. Ayrıca tüm Junit4 testlerini Junit5'i destekleyecek şekilde dönüştürmeyi de unutmayın.


2

Bunu pom.xml'de ayarlamak benim için çalıştı. Ancak diğer geçici çözümler için belgeleri kontrol etmelisiniz 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

Testte kullanılan çatallı JVM'nin belleği yetersiz. Çözüm, bir JVM çatalını devre dışı bırakmak ve ana JVM'de testleri çalıştırmak için yeterli belleğe sahip olmanız veya çatallı JVM'nin belleğini artırmak için argümanları iletmek olacaktır.

Bu cevaptaki çözümü inceleyin



1

Bu konudaki çözümüm, bilgisayarımın belleğini boğmuş olan lanet krom tarayıcıyı kapatmak oldu 🙄


1

Java seçeneklerini ayarlayabilirsiniz

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install


1

Windows'ta (OpenJDK11, Maven 3.6.0, SUREFIRE 3.0.0-M1) Bu temel nedeni aldım:

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

ve disk belleği dosyası boyutunu artırarak, örneğin bu şekilde çözüldü .


Linux'ta (4.4.0-145-generic, amd64), bir Jenkins işi için Oracle JRE 8'den AdoptOpenJDK_8u202b08 olarak değiştirildi ve "fork" hatası üretmeye başladı: - "Org.apache.maven.plugins hedefinin varsayılan testi : maven-surefire-plugin: 2.19.1: test başarısız oldu: Çatallı VM düzgün bir şekilde veda etmeden sonlandırıldı. VM çökmesi veya System.exit çağrıldı mı? " - Oracle JRE olarak değiştirildi ve hata durdu. Bu konudaki tek işimiz (bizim yaklaşık 300'ümüz). Neyse ki bu sadece dahili bir projedir, Sun / Oracle JRE'de tutabileceğimiz bir müşteri çıktısı değildir.
Robert

1

her şeyi denedim, işe yaramadı. aşağıdaki çözüm benim için çalışıyor:

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


Bu eklenti sürümü beni hepled etti. Bu arada yapılandırmam: 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

Aynı sorunu yaşadım ve Java 8'i Java'dan Openjdk yerine Java 10 kullanarak çözdüm


1

Sağlanan tüm çözümleri denedim (çatal, sistem yükleyici, daha fazla bellek vb.), Hiçbir şey işe yaramadı.

Ortam : Yapım bir docker konteyneri içinde çalışarak gitlab ci ortamında yapılamadı.

Çözüm : 2.20.1 sürümünde surefireplugin kullandık ve 2.21.0 veya daha yüksek bir sürüme (2.22.1 kullandık) yükseltme sorunu çözdük.

Neden : SUREFIRE-1422 - surefire komutu kullanıyorps , docker ortamında bulunmayan ve "kilitlenmeye" yol açan . Bu sorun 2.21.0 veya daha yeni bir sürümle giderilmiştir.

Başka bir soruya verilen bu yanıt sayesinde: https://stackoverflow.com/a/50568662/2970422


1

Bağlantı noktası 5005'te Selenium test kodunda uzaktan hata ayıklama yaparken MacOS'ta da bu sorunla karşılaştım. Sorun, çalışmaya devam eden bir kalan emin ateş çatallı-JVM'den kaynaklandı. Eclipse IDE terminaline günlük çıktısı, Adres zaten kullanımda olan temel sorunu göstermedi . Günlük iletisi yalnızca Eclipse'nin gerçekten çalıştırmaya çalıştığı bir MacOS terminalinde aynı komutu çalıştırdığımda gösterildi:

/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

Sahte JVM örneğini öldürmek (Etkinlik İzleyicisi'nde bir java işlem adı arayın) sorunu çözdü. Bu arada, açık jdk 8 (v1.8.0_212) ile hiçbir sorun olmadan surefire eklentisi sürüm 2.21.0 çalıştırıyorum. Tüm yolların oluşturma ortamınıza ve muhtemelen bağlantı noktasına özgü olacağını unutmayın (adres = 5005).


1

Maaven testi kullanarak birim testleri çalıştırırken de aynı sorunla karşı karşıya kaldım. Güzelliğinde sürümlerini değiştirmeyi denedim ama dinnt çalışıyor. Sonunda aşağıdaki gibi çözmeyi başardılar: EARLIER: (sorun meydana geldiğinde): javac jdk 1.8'den java jdk 1.11'den java binine işaret ediyordu CURRENT: (sorun çözüldüğünde): hem javac hem de java kutular ___ 'dan jdk 1.8

Saygılarımızla Teja.


0

Bu hatayı test sınıfımda statik bir nesne değişkeni (bu, sınıf boyunca test durumlarda kullanıldı) bir nesne oluşturmak için bir yöntem denilen sonra yaşadı ve yöntem bir istisna neden oldu.

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

Bazı düzeltmeler, nesneyi her test senaryosunun içinde yeniden oluşturmayı ve buna göre istisnaları yakalamayı içerir. Ya da nesneyi @BeforeTest yöntemi içinde başlatarak ve düzgün oluşturulduğundan emin olarak.


0

Benim durumumda, sorun çok uzun olan çalışma alanı yolu ile ilgiliydi. Bu yüzden yeniden düzenleyen bir yol yaptım ve bu da sorunu bana çözdü.


Bu bir windows makinesinde miydi?
16:42 de hithwen

Evet, Windows'ta çalışıyor.
thiago-devel

Bunu nasıl buldun?
dzieciou
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.