कांटे वाले वीएम को ठीक से अलविदा कहे बिना समाप्त कर दिया। VM क्रैश या System.exit कहा जाता है


191

कृपया इस मुद्दे को हल करने में मेरी मदद करें। मुझे ठीक से समझ नहीं आ रहा है कि लॉग में त्रुटि क्या है।

[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 के साथ फिर से चलाएं जैसे आउटपुट बताता है, और जो आपको देता है उसे पेस्ट करें। इसके अलावा, क्या आप अपना खुद का कोड या मौजूदा लाइब्रेरी बना रहे हैं? यदि आप अपना स्वयं का कोड बना रहे हैं, तो क्या आप कहीं भी System.exit (int) कह रहे हैं? यदि आप एक मौजूदा पुस्तकालय का निर्माण कर रहे हैं, तो आपको स्रोत कहां से मिला?
नायलॉन

@ नायलॉन एडवर्ड्स: यह एक मौजूदा स्रोत कोड है, एसडीएन कार्यान्वयन के लिए ओपनडाइट प्रोजेक्ट।
astack

हाल ही में एक परिदृश्य मेरे पास था कि इस मुद्दे को पुन: पेश किया गया था जब मैंने xml फ़ाइलों से परीक्षण सूट चलाए। यदि कोई xml फ़ाइल एक ऐसे वर्ग को परिभाषित करती है जो अब मौजूद नहीं है, या किसी वर्ग के पुराने पूरी तरह से योग्य नाम को संदर्भित करता है, तो JVM कक्षा को लोड करने में विफल रहता है। इससे आपके द्वारा देखे गए अजीब संदेश में परिणाम होता है। किसी भी स्टैक-ट्रेस के करीब देखने से आपको इस तरह के मुद्दों की पहचान करने में मदद मिल सकती है, इस मामले में -ई या -X स्विच को पास करने की आवश्यकता नहीं है।
Ivaylo Slavov

@astack इसका समाधान क्या निकला? क्या आप एक उत्तर को चिह्नित कर सकते हैं या अपना स्वयं का कृपया लिख ​​सकते हैं।
नमन

जवाबों:


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 मैंने इस स्निपेट, वर्बेटिम का उपयोग किया, और इसने ट्रैविस-सीआई के साथ मेरा मुद्दा तय किया। हम अपने डेवलपर के किसी भी कार्यस्थान पर इसे प्राप्त नहीं कर रहे थे।
स्टार्टअप

7
ऊपर ने मेरे लिए मुद्दे को ठीक नहीं किया। यह समस्या 'हो सकती है' जब निर्भरता (जार आदि) में से .m2एक भ्रष्ट हो। ~ / .M2 / रिपॉजिटरी को हटाना rm -rf ~/.m2/repositoryऔर फिर mvn installइसे मेरे लिए हल कर दिया।
ch4nd4n

2
कॉपी और इसे मेरी पोम फ़ाइल में चिपकाया और यह एक आकर्षण की तरह काम किया, धन्यवाद
फ्लेम जूल

8
OpenJDK 64-बिट सर्वर VM चेतावनी: अनदेखा विकल्प MaxPermSize = 256m; समर्थन 8.0
जुलिएन

2
क्या कोई समझा सकता है कि यह वास्तव में क्या करता है और इसका क्या प्रभाव पड़ता है?
बोर्गमाटर

72

मेरे मामले में यह समस्या इंटेलीज आईडीईए कंसोल (ओएस विंडोज़ 10) में बहुत लंबे लॉग आउटपुट से संबंधित थी।

कमान:

mvn clean install

इस कमांड ने मेरे लिए समस्या हल कर दी:

mvn clean install > log-file.log

लॉग बहुत लंबे समय तक मेरे लिए भी समस्या थी! लॉगफ़ाइल में पुनर्निर्देशित करने से कोई मदद नहीं मिली। जानकारी से डीबग करने के लिए कुछ सबसे आम लॉगिंग स्टेटमेंट्स को बदलना, समस्या को हल किया
RvPr

7
मेरे मामले में बहुत ज्यादा लॉगिंग असली समस्या थी !!
चांगवोन चोए

1
त्रुटि स्ट्रीम भी न भूलें: mvan क्लीन टेस्ट 2> इरेटेक्स 1> आउट.टैक्स या एमवायएन क्लीन टेस्ट> आउट.टैक्स 2> और 1 या एमवायएन क्लीन टेस्ट 2> & 1 | टी आउट करें। फिर से पुनर्निर्देशन करते समय, आप कम + एफ आउट के साथ अन्य कंसोल में आउटपुट देख सकते हैं। एक्सएक्सएक्स
रेडज़िमिर

1
मेरे लिए, विंडोज़ cmd से Intellij कंसोल पर स्विच करने से इसे हल किया गया।
ब्रोकोली

3
दरअसल, लॉग फ़ाइल में रीडायरेक्ट करना इस समस्या को हल करता है।
क्षितिज 7

40

मेरे पास बहुत ही समस्या है ( मावेन बिल्ड और मावेन-फ़ेलसेफ़-प्लगइन - सही तरीके से अलविदा वीएम को बिना अलविदा कहे समाप्त कर दिया गया ) और तीन समाधान पाए गए जो मेरे लिए काम कर रहे हैं:

समस्या का विवरण

समस्या केवल २.२०.१ और २.२१.० संस्करण में मावेन प्लगइन मावेन -अचूक-प्लगइन के साथ है । मैंने जाँच की और आप संस्करण २.२०.१ का उपयोग करते हैं।

समाधान 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.20 तकPom.xml में जोड़ें :

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

समाधान 3

प्लगइन कॉन्फ़िगरेशन टेस्टफेल्योर का उपयोग करें । 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> <विरूपण साक्ष्य> maven-Surefire-plugin </ विरूपण साक्ष्य> <संस्करण> 2.22.1 </ version> <कॉन्फ़िगरेशन> testFailureIgnore> true </ testFailureIgnore> </ कॉन्फ़िगरेशन> </ plugin>
अभिषेक

इसके लिए धन्यवाद, maven:3.6.0-jdk-10डॉकर छवि का उपयोग करना और मेरे लिए भी हल किए गए संस्करण 3.0.0-M3में अपग्रेड करना maven-surefire-plugin
डैनियलक

18
समाधान 3 के संबंध में: क्या हम वास्तव में कह सकते हैं कि परीक्षण विफलताओं को अनदेखा करना एक समाधान है? यदि उनका परिणाम अर्थहीन है तो परीक्षण होने की क्या बात है?
उलूकई

मैं सिर्फ 2.22.2 के लिए मावेन-अचूक-प्लगइन उन्नत किया है और ठीक काम करता है!
Krzysztof Walczewski

हाँ! सुनिश्चित करने के लिए v2.22.2 के उन्नयन ने इसे मेरे लिए भी हल कर दिया। धन्यवाद!
मिग्स

32

आज (१०/३०/२०१।) के अनुसार, हमने इस त्रुटि के साथ जेनकींस में हमारे निर्माण को तोड़ने पर ध्यान दिया।

target/surefire-reports/ निम्न त्रुटि संदेश को देखने के लिए डंप के आउटपुट को देखने में त्रुटि एक भ्रामक और आवश्यक है :

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

मुझे उस एसओ पद पर ले जाना चाहिए जो ओपनजेडके 181 में एक संभावित बग का उल्लेख करता है: मावेन अचूक को फोर्कबेडर वर्ग नहीं मिला।

उस पोस्ट में से किसी एक फिक्सेस ने मेरी समस्या हल कर दी। विशिष्ट होने के लिए, मैंने इनमें से किसी एक का उपयोग किया:

  1. Docker कंटेनर में बिल्डिंग से स्विच maven:3.5.4-jdk-8करनाmaven: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
यह सटीक समस्या है जो मैं अपने जेनकिन्स पर सामना कर रहा था और अब यह हल हो गई है। धन्यवाद।
विघ्नेश पाई

ओपी के पास एक और त्रुटि संदेश था:The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
पेट्रो क्लिफ

1
@PetroCliff मैंने स्वीकार किया कि वह त्रुटि थी जो मुझे भी मिल रही थी जब मैंने कहा "हमने इस त्रुटि के साथ जेनकींस में हमारे निर्माण को तोड़ने पर ध्यान दिया "। मैं फिर समझाता हूं कि त्रुटि भ्रामक थी और वास्तविक त्रुटि थी surefire-reports
मेजिकमैन

25

अचूक अकसर किये गए सवाल का यह हिस्सा आपकी मदद कर सकता है:

अचूक संदेश "ठीक से अलविदा कहे बिना समाप्त किया गया वीएम समाप्त हो गया" संदेश के साथ विफल हो जाता है

अचूक परीक्षण किसी भी समय System.exit () कॉलिंग परीक्षण या किसी संदर्भित पुस्तकालय का समर्थन नहीं करता है। यदि वे ऐसा करते हैं, तो वे अचूक के साथ असंगत होते हैं और आपको संभवतः पुस्तकालय / विक्रेता के साथ एक समस्या दर्ज करनी चाहिए। वैकल्पिक रूप से कांटा गया वीएम कई कारणों से भी दुर्घटनाग्रस्त हो सकता है, जिससे यह समस्या हो सकती है। शास्त्रीय "hs_err *" फ़ाइलों के लिए देखें, VM क्रैश का संकेत देती हैं या परीक्षण निष्पादित होने पर मावेन चलाने से लॉग आउटपुट की जांच करती हैं। दुर्घटनाग्रस्त प्रक्रियाओं से कुछ "असाधारण" आउटपुट को कंसोल / लॉग में डंप किया जा सकता है। यदि यह CI वातावरण पर होता है और केवल कुछ समय चलने के बाद एक उचित मौका होता है तो आपका परीक्षण सूट कुछ प्रकार के ओएस-स्तरीय संसाधन को लीक कर रहा है जो हर रन के लिए चीजों को बदतर बना देता है। नियमित ओएस-स्तरीय निगरानी उपकरण आपको कुछ संकेत दे सकते हैं।


9

बस एक ही समस्या का सामना कर रहा था, ubuntu पर जावा 8

उसके बाद https://stackoverflow.com/a/53016532/1676516 पर आया

यह अचूक प्लगइन संस्करण 2.22.1 में जावा 8 https://issues.apache.org/jira/browse/SUREFIRE-1588 के साथ हाल ही में एक बग लगता है

स्थानीय मावन सेटिंग्स के माध्यम से सुझाए गए वर्कअराउंड का पालन किया ~/.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 (उदाहरण के लिए) के एक साधारण ऐड ने समस्या को हल किया है।
गैलीगेटर

6

मेरे पास आज भी यही मुद्दा था और मेरे लिए संदेश के साथ लॉग में वास्तविक समस्या आगे बताई गई थी Cannot use a threadCount parameter less than 1; 1 > 0<threadCount>1</threadCount>अचूक-प्लगइन में जोड़ते समय अन्य त्रुटि गायब हो गई।

पूर्ण प्लगइन कॉन्फ़िगरेशन:
        <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>

... और हाँ, मैं पिछड़े संगतता कारणों के लिए इस परीक्षण ढांचे में जूनिट और टेस्टेंज दोनों का उपयोग कर रहा हूं।


6

JDK 1.8.0_ 65 पर जैकोको प्लगइन के साथ mvan कमांड चलाते समय इसी तरह की समस्या थी

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

और इसका समाधान था mvan क्लीन इंस्टाल को परम -XX: -UseLoopPredicate के साथ चलाना

या सिर्फ JDK के लिए एक अपडेट करें (मुझे लगता है कि नया लघु संस्करण काम करता है)


6

Maven-Surefile- प्लगइन का उपयोग बंद करेंSystemClassLoader को मदद करनी चाहिए

        <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 से पंक्तिबद्ध एक docker छवि पर आर्टिफैक्ट के माध्यम से मावेन का निर्माण कर रहा हूं। यह काम करने के लिए एक प्रतिनिधि सेटअप प्राप्त करने के लिए मुश्किल हो गया है और अचूक सेटिंग्स के लिए बहुत सारे विकल्पों की कोशिश करने के बाद इसे एक संस्करण 2.22.0 के साथ तय किया।
रिचर्ड बोस

1
Gitlab CI में हर मावेन जॉब के लिए इस विकल्प को जोड़ना होगा और इसका कोई सुराग नहीं होना चाहिए।
cljk

5

यदि कोई कस्टम argLine तर्क सहित है, तो आपको पुनर्विचार करना होगा क्योंकि यह संभवतः मेमोरी आवंटन के साथ आपके मुद्दों का स्रोत है।

उदाहरण के लिए (मेरे पास था):

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

अब मैं कठिन निर्दिष्ट मानों का उपयोग करता हूं:

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

जो भी कारण के लिए, अनुप्रयोग जो कि जैकोको जैसे अचूक के साथ एकीकृत होते हैं, निर्माण समय पर होने वाले परीक्षण के साथ सह-अस्तित्व के लिए पर्याप्त स्मृति का अनुरोध नहीं करते हैं।


5

मैं इस समस्या के साथ-साथ जेनकिंस डॉकटर कंटेनर (ट्राई किया गया जेनकिंस: lts, ​​जेनकिंस, जेनकिंस: स्लिम एंड जेनकिंस: स्लिम-लेट्स) में भी भाग गया। मैं सभी रिपोजिटरी के माध्यम से नहीं जाना चाहता था और प्रत्येक प्रोजेक्ट के लिए पोम अपडेट करना चाहता था, इसलिए मैं। बस विकलांग कमांड लाइन कॉल में अक्षम करेंClassPathURLCheck को जोड़ा:

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

5

2.21.0 मावेन अचूक का उपयोग करके मैंने समस्या reuseForksको सही से गलत पर बदलने के मुद्दे को हल किया :

<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 से अधिक नहीं होनी चाहिए, यहां तक ​​कि यह 4 जीबी से नीचे होनी चाहिए। लेकिन अगर आपकी मशीन 64 बिट की है, तो जावा 64 बिट इंस्टॉल करें और mAV.bat में JAVA_HOME प्रदान करें जो जावा 64 बिट इंस्टॉलेशन की ओर इशारा करता है।


4

मैं एक ऐसे मामले में मिला हूं जब कोई भी उत्तर प्रदान नहीं करता है कि समस्या हल हो गई है। यह एक विरासत अनुप्रयोग के साथ था जो log4j और SLF4J / लॉगबैक का उपयोग करने के लिए होता है।

पिछली स्थिति: clean testग्रहण के भीतर से लॉन्च किए जाने पर बिल्ड ठीक चल रहे थे, लेकिन जब कमांड लाइन में लॉन्च किया गया, तो यह त्रुटि हुई। सर्किल पर CI का निर्माण ठीक चला।

मैंने क्या किया: शुद्ध अनुमान से, उचित रूप से कॉन्फ़िगर किया गया है logback-test.xmlऔर लॉगिंग की क्रियाशीलता को नीचे डायल करें। लो और निहारना, मुझे अब इस त्रुटि का अनुभव नहीं हुआ है और मैं अब कमांड लाइन से प्रोजेक्ट (साथ ही मॉड्यूल जिसमें यह त्रुटि उत्पन्न हो रही थी) का निर्माण कर सकता है।

मेरा कहना यह है कि लॉगिंग फ्रेमवर्क का उपयोग या कॉन्फ़िगर करने का तरीका एक और स्पष्टीकरण हो सकता है

क्या यह वास्तव में log4j और logback के बीच संघर्ष था? या यह सिर्फ इतना था कि परीक्षणों द्वारा उत्पादित लॉगिंग की उच्च मात्रा किसी भी तरह कमांड लाइन बफर से बह निकली थी? मुझे नहीं पता। यह मेरे लिए एक रहस्य बना हुआ है।


Upvoting क्योंकि यह वास्तव में समस्या को हल / टाल / टाल सकता है। मैं विंडोज पर slf4j और sl4j-simple का उपयोग कर रहा हूं और सुस्त आउटपुट ने मुझे इस दिशा में भी बताया। System.setProperty (SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "चेतावनी") सेट करना; चाल चली। 2.18.1 के लिए मावेन-अचूक-प्लगइन को अपग्रेड करना भी काम किया।
मारकस

4

मुझे जावा 12 में अपग्रेड करने के बाद इसी तरह के मुद्दे का सामना करना पड़ा, मेरे लिए समाधान यह था कि मैं जोको संस्करण को अपडेट करूं <jacoco.version>0.8.3</jacoco.version>


यह वास्तव में समस्या थी जो मैं अपने प्रोजेक्ट के साथ कर रहा था। बहुत बुरा यह जवाब है कि दिखाई नहीं देता ...
OmriYaHoo

4

संस्करण २.२२.२ में जाली जेवीएम के साथ वास्तविक समस्याएं हैं। 2.20 संस्करण का उपयोग करें - यह एक आकर्षण की तरह काम करता है!


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

हम्म, यह वास्तव में मदद करता है!
16:16 पर जेन झांग

हाँ, के v2.22.2साथ एक मुद्दा है maven:3.6-jdk-8-alpine। गुस्सा कर देने वाला!
किम्चीमन

3

मैं हाल ही में बांस के साथ अपने कंटेनरीकृत जार अनुप्रयोगों के निर्माण में इस त्रुटि के साथ फंस गया:

org.apache.maven.surefire.booter.urefireBooterForkException: ठीक से अलविदा कहे बिना समाप्त किए गए VM को समाप्त कर दिया गया

कई घंटों के शोध के बाद मैंने इसे ठीक किया। और मुझे लगा कि मेरा समाधान यहां साझा करना उपयोगी होगा।

इसलिए त्रुटि हर बार होती है जब बांस चलता है mvn clean package डॉक कंटेनर में जावा अनुप्रयोगों के लिए कमांड। मैं कोई मावेन विशेषज्ञ नहीं हूं, लेकिन परेशानी सफ़ेयर और जुनिट 4 प्लगइन्स में थी, जिसमें मावेन निर्भरता के रूप में स्प्रिंग-बूट शामिल थे।

इसे ठीक करने के लिए आपको 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 पर परीक्षण चलाने से आपको सुनिश्चित होगा कि आपके पास पर्याप्त मेमोरी है या forked JVM की मेमोरी बढ़ाने के लिए args पास करना है।

इस उत्तर में समाधान देखें


1

मैं इस समस्या में भाग गया जब जेनकिंस एक उबंटू मशीन पर बनाता है।

/var/log/syslogरिपोर्ट की गई Out of memory: Kill process 19557 (java) score 207 or sacrifice child

इसलिए मैंने उबंटू मशीन को अधिक स्वैप स्थान दिया । तब से, समस्या दूर हो गई है।


1

इस मुद्दे पर मेरा संकल्प लानत क्रोम ब्राउज़र को बंद करना था जो मेरे कंप्यूटर की मेमोरी को चोक कर रहा था was



1

विंडोज पर (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)

और पेजिंग फ़ाइल का आकार बढ़ाकर हल किया गया, जैसे कि यह


लिनक्स पर (4.4.0-145-जेनेरिक, amd64), ओरेकल JRE 8 से बदलकर जेनकिंस जॉब के लिए AdoptOpenJDK_8u202b08 हो गया और इसने "कांटा" त्रुटि उत्पन्न करना शुरू कर दिया: - लक्ष्य की निष्पादन डिफ़ॉल्ट परीक्षा org.apache.maven.plugins : मावेन-अचूक-प्लगइन: 2.19.1: परीक्षण विफल रहा: कांटा हुआ वीएम को ठीक से अलविदा कहे बिना समाप्त कर दिया गया। वीएम क्रैश या System.exit कहा जाता है? " - Oracle JRE में वापस बदल गया और त्रुटि बंद हो गई। इस मुद्दे को रखने के लिए यह एकमात्र काम है (लगभग 300 में से)। सौभाग्य से यह केवल एक आंतरिक परियोजना है, न कि एक ग्राहक सुपुर्दगी सह जिसे हम इसे Sun / Oracle JRE पर रख सकते हैं।
रॉबर्ट

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


1

मैंने सभी प्रदान किए गए समाधानों की कोशिश की (फोर्किंग, सिस्टम लोडर, अधिक मेमोरी आदि ..), कुछ भी काम नहीं किया।

पर्यावरण : बिल्ड gitlab ci वातावरण में विफल रहा है, एक डॉक कंटेनर के अंदर बिल्ड को चला रहा है।

समाधान : हमने संस्करण २.२०.१ में अचूक फायरप्लेस का उपयोग किया और २.२१.० या उससे अधिक पर अपग्रेड किया (हमने २.२२.१ का उपयोग किया) ने इस मुद्दे को तय किया।

कारण : SUREFIRE-1422 - अचूक कमांड कमांड का उपयोग करता है ps, जो docker वातावरण में उपलब्ध नहीं था और "क्रैश" का कारण बना। यह समस्या 2.21.0 या अधिक में ठीक की गई है।

एक अन्य प्रश्न के इस उत्तर के लिए धन्यवाद: https://stackoverflow.com/a/50568662/2970422


1

मैं 5005 पोर्ट पर सेलेनियम परीक्षण कोड को डीबग करते समय मैकओएस पर भी इस मुद्दे पर भाग गया। समस्या एक बचे हुए अचूक-फोर्क्ड-जेवीएम के कारण हुई जो चल रहे थे। ग्रहण आईडीई टर्मिनल के लिए लॉग आउटपुट ने अंतर्निहित समस्या को नहीं दिखाया था जो पहले से उपयोग में था । लॉग संदेश केवल तब दिखाया गया था जब मैंने मैकओएस टर्मिनल में एक ही कमांड चलाया था कि एक्लिप्स वास्तव में चलाने की कोशिश कर रहा था:

/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

दुष्ट जेवीएम उदाहरण (गतिविधि मॉनिटर में एक जावा प्रक्रिया नाम के लिए देखो) को मारना इस मुद्दे को तय करता है। वैसे मैं अचूक प्लगइन संस्करण 2.21.0 चला रहा हूं जिसमें खुले jdk 8 (v1.8.0_212) के साथ कोई समस्या नहीं है। ध्यान दें कि सभी पथ आपके बिल्ड वातावरण और संभवतः पोर्ट (पता = 5005) के लिए विशिष्ट होंगे।


1

मैं उसी मुद्दे का सामना कर रहा था जब मावेन परीक्षण का उपयोग करके यूनिट परीक्षण चला रहा था। अचूक संस्करणों को बदलने की कोशिश की, लेकिन यह काम नहीं करेगा। अंत में निम्नानुसार हल करने में कामयाब रहे: EARLIER: (जब समस्या हो रही थी): javac jdk से है 1.8 java, java bin से jdk 1.11 अंक की ओर इशारा कर रहा था: (जब समस्या हल हो गई: दोनों javac & java इंगित कर रहे हैं jdk 1.8 से डिब्बे

सादर तेजा।


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

मेरे मामले में, यह मुद्दा कार्यक्षेत्र पथ से संबंधित था जो बहुत लंबा था। इसलिए मैंने एक रास्ता तैयार किया और इसने मेरे लिए इस मुद्दे को हल किया।


क्या यह एक विंडोज़ मशीन पर था?
१।

हां, यह विंडोज में चल रहा है।
थियागो-डेवेल

आपने उसे कैसे पाया?
dzieciou
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.