मावेन अचूक को ForkedBooter वर्ग नहीं मिला


218

हाल ही में एक नई परियोजना के लिए आ रहा है, मैं हमारे स्रोत कोड को संकलित करने की कोशिश कर रहा हूं। कल सब कुछ ठीक रहा, लेकिन आज एक और कहानी है।

हर बार जब मैं mvn clean installएक मॉड्यूल पर चल रहा होता हूं , एक बार परीक्षण तक पहुंचने के बाद, यह एक त्रुटि में बदल जाता है:

[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ recorder ---
[INFO] Surefire report directory: /lhome/code/recorder/target/surefire-reports
[INFO] Using configured provider org.apache.maven.surefire.junitcore.JUnitCoreProvider
[INFO] parallel='none', perCoreThreadCount=true, threadCount=0, useUnlimitedThreads=false, threadCountSuites=0,     threadCountClasses=0, threadCountMethods=0, parallelOptimized=true

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

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

और बाद में:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project recorder: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

मैं ओपनबीडीके 1.8.0_181, मावेन 3.5.4 के साथ डेबियन 9 (स्ट्रेच) 64-बिट्स पर चल रहा हूं , मेरी कंपनी प्रॉक्सी के पीछे काम कर रहा हूं जिसे मैंने अपने में कॉन्फ़िगर किया था ।~/.m2/settings.xml

एक अजीब बात यह है कि नवीनतम सरफायर संस्करण 2.22.1 है अगर मुझे सही याद है। मैंने प्लगइन संस्करण को निर्दिष्ट करने की कोशिश की, लेकिन यह अपडेट नहीं होता है, अन्यथा किसी भी पीओएम (माता-पिता, भव्य-माता-पिता या यह एक) में कोई प्लगइन संस्करण विनिर्देश नहीं है ।

मैं मावेन को ज़बरदस्ती संस्करण को नवीनतम में बदलने के लिए मजबूर करने में कामयाब रहा, लेकिन अब यह और भी बुरा है:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[...]

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project recorder:     There are test failures.
[ERROR]
[ERROR] Please refer to /lhome/code/recorder/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye.     VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
[ERROR]     at     org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

1
मैं इस बग को clircle-ci में रख रहा हूं। अचूक कांटे और कांटे की वीएम निम्न संदेश को प्रिंट करती है और बाहर निकलती है: "त्रुटि: मुख्य वर्ग org.apache.maven.surefire.booter.ForkedBooter को ढूंढ या लोड नहीं कर सका"। मालिश लक्ष्य / अचूक-रिपोर्ट / * में है। यदि आप -X के साथ मावेन चलाते हैं तो यह कमांड लाइन को प्रिंट करता है, आप इसे आज़मा सकते हैं और इस संदेश को प्रिंट करते हुए देख सकते हैं।
ब्रूनो कॉटिन्हो


मेरा समाधान किसी भी संस्करण के ओपन-जेक का उपयोग बंद करना था। इस तरह की अविश्वसनीयता को इस तरह से पाया नहीं जा सकता है।
एड्रियन एम।

dependencyManagementप्लगइन्स के विभिन्न संस्करणों को निर्दिष्ट करने के लिए
मावेन

डेबियन पर jdk 11 को अपडेट करना मेरे लिए एक अचूक उपाय था!
23

जवाबों:


251

इसे ठीक करने के लिए (2018 में), अपने ओपनजेडक को नवीनतम संस्करण में अपडेट करें, कम से कम 8u191-b12। यदि यह समस्या 2020 में फिर से प्रकट होती है, तो यह संभावना है कि ओपनजेडक का डिफ़ॉल्ट व्यवहार बदल गया था, और फिर आपको मावेन अचूक प्लगइन को अपडेट करने की आवश्यकता होगी।

यह ओपनजेडके -8 पैकेज में एक निश्चित फिक्स्ड बग था (बिना जरूरत के अपस्ट्रीम से व्यवहार विचलित हो जाता है, एक सुरक्षा जांच को अक्षम करने के लिए अपस्ट्रीम पैच को वापस करने से चूक जाता है) जिसे आपने अभी अपग्रेड किया था। लेकिन यह भी अशुद्धि जाँच प्लगइन में एक बग है, SUREFIRE-1588 , माना जाता है कि निश्चित रूप से अचूक 3.0.0-M1 में तय किया गया है: यह जाहिरा तौर पर एक ऐसे स्थान पर निरपेक्ष रास्तों का उपयोग कर रहा है जहाँ जावा भविष्य में केवल सापेक्ष पथ नामों (और डेबियन को सक्रिय करने की अनुमति देगा) भविष्य का व्यवहार पहले से ही)।

पैकेज संस्करण 8u181-b13-2 राज्य:

  • 8u191-b12 सुरक्षा अद्यतन से पैच लागू करें।

ध्यान दें कि 191-बी 12! = 181-बी 13। 191-b12 सुरक्षा पैच कुछ दिन पहले ही बाहर हो गए थे, और जाहिर है कि अनुचर उन्हें जल्दी से जल्दी प्राप्त करना चाहते थे। पूरी तरह से 191-b12 में अद्यतन करने की आवश्यकता होगी अतिरिक्त परीक्षण (अच्छी तरह से, इसलिए यह अपलोड होना चाहिए, जाहिरा तौर पर)।

वहाँ कई काम कर रहे थे:

  1. आप इसके बजाय Snapshots.do से पिछले पैकेज को स्थापित कर सकते हैं । अपग्रेड करने के बाद, आप टूटे हुए संस्करण (यदि आप योग्यता का उपयोग कर रहे हैं और नहीं apt) का उपयोग करने से मना कर सकते हैं sudo aptitude forbid-version openjdk-8-jre-headless। नियमित रूप से "उपयुक्त" के लिए मैंने एक समान निषिद्ध तंत्र नहीं देखा था, इसलिए आपको इस अपग्रेड को फिर से स्थापित करने से रोकने के लिए उपयुक्त पिनिंग का उपयोग करने की आवश्यकता होगी (या आप बस फिर से अपग्रेड करते रहेंगे, मुझे उम्मीद है कि यह जल्द ही हल हो जाएगा)।
  2. बग ट्रैकिंग के अनुसार, -Djdk.net.URLClassPath.disableClassPathURLCheck=trueकिसी भी सामान्य तरीके (जैसे, JAVA_FLAGS) के साथ संपत्ति सेट करना भी मदद करना चाहिए। लेकिन मैंने खुद इसे सत्यापित नहीं किया है। आप स्पष्ट रूप से अपने सभी मावेन बिल्ड को आसानी से सक्षम करने के~/.m2/settings.xml लिए वर्कअराउंड भी जोड़ सकते हैं।

जैसा कि आप देख सकते हैं, बग ट्रैकिंग कार्य करता है , समस्या को कम कर दिया गया था, और एक निश्चित पैकेज उपलब्ध है और अचूक प्लगइन का एक नया संस्करण जल्द ही आएगा!


@ AdrianMadaras मुझे अभी तक एक नया अपडेट नहीं मिला है, केवल -2 संस्करण। अभी तक एक निश्चित अपलोड की घोषणा नहीं की गई थी, लेकिन इसकी प्रक्रिया चल रही थी। आप शायद ज्ञात समस्याग्रस्त संस्करण में फिर से अपग्रेड हो गए हैं।
Erich Schubert

1
मैं सिर्फ Ubuntu 18.04 पर एक ही मुद्दा मिला, OpenJDK 10.0.2 का उपयोग कर। JAVA_HOME को मेरे 'java-9-oracle' पर स्विच करने से इसे ठीक किया गया।
रोबु

2
एशफायर - मावेन -प्लगइन इश्यू ट्रैकर में इसी मुद्दे को यहां दिया गया है: issues.apache.org/jira/browse/SUREFIRE-1588 (यह अभी भी प्रासंगिक OpenDDK परिवर्तनों के कैनोनिकल / डेबियन बैकपोर्ट में एक बग है)।
mirabilos

1
चारों ओर काम 1. मेरे लिए कोई मतलब नहीं है क्योंकि यह संस्करण मैं इस मुद्दे पर अनुभव कर रहा हूं। मावेन-अचूक-प्लगइन का उपयोग न करने के लिए अधिलेखित करने के लिएSystemClassLoader भी काम नहीं किया
एडविन डियाज़-मेंडेज़

1
तुम भी 3.0.0-M1 अचूक करने के लिए उन्नयन की कोशिश कर सकते हैं। लेकिन 2 से 3 मील का पत्थर संस्करण निश्चित रूप से अन्य सामान को तोड़ सकता है।
Erich Schubert

54

प्रयोग करें सेट करें

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

यदि आप किसी ऐसे माता-पिता से विरासत में नहीं हैं, जिसका आपके लिए संस्करण परिभाषित है (जैसे कि स्प्रिंग बूट स्टार्टर) तो आपको उसे भी परिभाषित करना होगा।


सिस्टम क्लास लोडर को सक्षम करना सबसे खराब अभ्यास है क्योंकि आप प्लगइन प्रक्रिया में परीक्षण चला रहे हैं। प्रत्येक प्लगइन के संस्करण को उन्नत करने के लिए सही अभ्यास है। Maven 3.7.0 सभी प्लगइन्स के संस्करणों को अपग्रेड करेगा जो डिफ़ॉल्ट जीवन चक्र से संबंधित हैं। स्प्रिंग को पुराने संस्करणों से नहीं चिपकना चाहिए और उन्हें ओवरराइड भी नहीं करना चाहिए। इससे जिम्मेदारियों में अनावश्यक टकराव होता है।
tibor17

52

मुझे यह वर्कअराउंड मिला और मेरे परीक्षण तय किए: maven-surefire-pluginसिस्टम क्लास लोडर का उपयोग न करने के लिए कॉन्फ़िगर करें ।


मावेन-अचूक-प्लगइन अनुचर के अनुसार, सभी वर्कअराउंड (यह, forkCount0 पर सेट करना, या argLineविश्व स्तर पर स्थापित करना ) की समस्याएं हैं और इसे सार्वभौमिक रूप से लागू नहीं किया जा सकता है।
mirabilos

अच्छा मिल गया। लेकिन कृपया अपने पोस्ट में वास्तविक वर्कअराउंड टेक्स्ट शामिल करें, या कम से कम लिंक को स्टैकओवरफ्लो लिंक के रूप में स्पष्ट रूप से पहचानें। यानी @markoorn द्वारा उपयोग किया जाने वाला दृष्टिकोण अधिक सहायक है।
nealmcb

38

मेरे पास एक और वर्कअराउंड है। पर्यावरण चर _JAVA_OPTIONS सेट करें। मैंने इसे अपने TeamCity बिल्ड एजेंटों के लिए उपयोग किया है और अब हमारे बिल्ड ठीक चलते हैं।

_JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true

एक सुरक्षा परिवर्तन के रूप में लेबल किए गए एक ब्रेकिंग परिवर्तन को आमतौर पर बिना किसी कारण के पेश नहीं किया जाता है और इसलिए कि कोई SO पर बताता है कि इसे कैसे निष्क्रिय करना है ... बस
Sayin

26

मैंने JIRA में उपरोक्त वर्कअराउंड में से एक का अधिक लक्षित संस्करण पोस्ट किया । इसमें जोड़ें ~/.m2/settings.xml:

<profile>
    <id>SUREFIRE-1588</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>
    </properties>
</profile>

यह निम्नलिखित चेतावनी के साथ विफल होता है:[WARNING] Expected root element 'settings' but found 'profile' (position: START_TAG seen <profile>... @1:9) @ /home/nikolai/.m2/settings.xml, line 1, column 9
निकोलाई

3
@ नाइकोलाई उपरोक्त स्निपेट को संलग्न करने की आवश्यकता है <settings><profiles>...</profiles></settings>
क्यूएक्स

13

मेरे पास GitLab CI बिल्ड में यह मुद्दा था, जो maven:3.5.4-jdk-8डॉकर इमेज का उपयोग कर रहा था ।

इसे बदलकर maven:3.5.4-jdk-8-alpineसमस्या को ठीक किया।


8

मैंने इस लिंक का अनुसरण किया https://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html और pom.xml में नीचे प्लगइन जोड़ा और यह काम कर गया,

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.1</version>
        <configuration>
          <useSystemClassLoader>false</useSystemClassLoader>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

8

3.6.0-jdk-8छवि के साथ GitLab CI / CD का उपयोग करते समय केवल नीचे दी गई संपत्ति ही (संशोधित किए बिना pom.xml) मदद करती है ।

-Dsurefire.useSystemClassLoader=false

यह फिर से एक बुरा अभ्यास है। सही एक संस्करण को अपग्रेड करना है। हमेशा मावेन सेंट्रल में संस्करणों की जांच करें ।
tibor17

5

GitLab CI पर Docker Maven: 3.5.x-jdk-8 से संबंधित उत्तर की खोज करने वालों के लिए, इस GitHub मुद्दे को देखें

ऐसा प्रतीत होता है कि एक 3.5.4-jdk-8छवि एक मामूली जावा संस्करण में अपग्रेड हुई, जो कि किसी भी तरह से अचूक उपकरण को प्रभावित करता है।

3.5.3-jdk-8छवि पर वापस लौटना मेरे लिए मेरे GitLab CI सर्वर बिल्डिंग पर जावा 1.8 कोड को अचूक 2.20.1 के साथ तय करता है।


5

संपत्ति सेट करने के लिए ऊपर दिए गए सुझाव "-Djdk.net.URLClassPath.disableClassPathURLCheck = true" ने मेरे लिए काम नहीं किया, लेकिन निम्नलिखित सेट करना ठीक काम नहीं करता है:

-DforkCount=0

2
यह परीक्षणों को चलाने के लिए एक नया वीएम नहीं बनाने का प्रभाव है, इसलिए परीक्षण संभवतः मुख्य बिल्ड वीएम को प्रभावित कर सकते हैं।
पाओलो एबरमन

4

उबंटू के लिए: नवीनतम संस्करण स्थापित करें, इसमें इस बग को ठीक किया गया है

sudo apt-get update ; sudo apt-get dist-upgrade -y

बग के बिना अंतिम सुरक्षा संस्करण (सुरक्षा पैच के बिना) स्थापित करें।

sudo apt-get install openjdk-8-jdk-headless=8u181-b13-1 openjdk-8-jdk=8u181-b13-1  openjdk-8-jre=8u181-b13-1  openjdk-8-jre-headless=8u181-b13-1 openjdk-8-source=8u181-b13-1

यदि आप उस संस्करण से चूक गए हैं, तो उससे पहले संस्करण का उपयोग करें:

sudo apt-get install openjdk-8-jdk-headless=8u162-b12-1 openjdk-8-jdk=8u162-b12-1  openjdk-8-jre=8u162-b12-1  openjdk-8-jre-headless=8u162-b12-1 openjdk-8-source=8u162-b12-1

फिर पिनिंग का उपयोग करें या यह देखें कि आप टूटे हुए संस्करण को स्थापित नहीं करेंगे।

का उपयोग करते हुए -Djdk.net.URLClassPath.disableClassPathURLCheck=trueमेरे लिए काम नहीं किया जहाँ भी मुझे लगता है कि विन्यास रखा था। कहीं मेरे एकीकरण-परीक्षणों में यह हमेशा पुराने जावा संस्करण के बिना बाहर निकल गया।

जैसा कि एरिच ने उल्लेख किया है कि यह डेबियन पैकेज में बहुत सख्त है 911925 और नए नियम SUREFIRE-1588 के अनुसार अचूक-प्लगइन काम नहीं कर रहा है ।


क्यों कोई सुरक्षा पैच के बिना एक संस्करण स्थापित करने का सुझाव देगा ?! हालांकि अन्य सुझावों में स्किपिंग टेस्ट शामिल हैं, हुह।
बेरेज़ोव्स्की

1
आपको अब और करने की आवश्यकता नहीं है :-) यह तय हो गया है। लेकिन इस बीच मेरे पास कई जावा प्रोजेक्ट थे जिन पर मुझे काम करना था और मेरा जावा रनटाइम कहीं भी बाहर के किसी भी नए कोड के संपर्क में नहीं था। इसलिए मेरे लिए ठीक था एक ओवरसाइज़-सक्षम जोखिम था। यह सबका अपना फैसला है सब के बाद :-)
15

वास्तव में आप सही हैं, मैंने पाया कि JDK देवता डिफ़ॉल्ट रूप से उस प्रोप पर वापस चले गए: hg.openjdk.java.net/jdk/jdk/rev/f54dcfc5a5a58 ; लेकिन मेजर वर्जन को अश्यफायर में अपग्रेड करना मेरे लिए सबसे अच्छा फिक्स नहीं लगता, वास्तव में।
berezovskyi

1
पूर्ण रूप से! लेकिन उन्हें जो बदलाव करने थे वे पूरे कोडबेस और बहुत आक्रामक थे। तो इस फिक्स के लिए एक मामूली संस्करण परिवर्तन अचूक में एक विकल्प नहीं होगा।
16

1
और दुर्भाग्य से, 2.x बंद कर दिया गया है और हमें जल्द से जल्द एक स्विच बनाना होगा: issues.apache.org/jira/browse/…
berezovskyi

2

मैंने junit-jupiter-engine में निर्भरता को जोड़ा है, और यह काम किया है।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.4.0</version>
        </dependency>
    </dependencies>
</plugin>

यह बृहस्पति-प्लगइन क्या काला जादू करता है? यह मेरे लिए काम किया! वोट दें! :-)
हिनोटी

1

मैंने हाल ही में जेनकींस पर नौकरी के लिए सेटअप किया और उसी समस्या में फंस गया। मैंने JAVA env चर को संशोधित करने और हल किए गए मुद्दे की पुष्टि करने के लिए सुझाव लिया। इस तरह मैंने परीक्षण किया।

"जेनकिंस" उपयोगकर्ता बन जाता है और फ़ोल्डर को कार्यक्षेत्र प्रोजेक्ट नाम में बदल देता है जिसे आप नौकरी के लिए सेटअप करते हैं।

 $ _JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true mvn clean install -U

 $ lsb_release -rd
 Description:   Ubuntu 16.04.5 LTS
 Release:   16.04

 $ mvn -v
 Apache Maven 3.3.9
 Maven home: /usr/share/maven
 Java version: 1.8.0_181, vendor: Oracle Corporation
 Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
 Default locale: en_US, platform encoding: UTF-8
 OS name: "linux", version: "4.4.0-131-generic", arch: "amd64", family: "unix"

1

इस समस्या को हल करने के लिए maven-surefire-plugin को जोड़ना:

    <plugin>    
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId>  
        <configuration>
            <forkCount>0</forkCount>
        </configuration>
    </plugin>

1

मूल रूप से JDK संस्करण और मावेन-अचूक प्लगइन संस्करण के बीच एक असंगति है, मेरे मामले में, JDK 11.0.5 अचूक 3.0.0-M4 के साथ काम नहीं करता है, मुझे 3.0.0-M3 पर स्विच करना पड़ा और यह काम कर गया। forkCount को 0 पर सेट करना समस्या को ठीक नहीं करता है क्योंकि यह जैकोको रिपोर्ट को तोड़ता है।


0

मैंने रिपॉजिटरी में आने वाले JDK की स्थापना रद्द की:

$ sudo apt purge openjdk-8-jdk

$ sudo apt autoremove

फिर मैंने JAVA_HOMEपर्यावरण चर को हटा दिया । मेरा .bashrc में सेट किया गया था।

फिर मैंने SDKMAN के माध्यम से इसे पुनः स्थापित किया:

$ sdk install java 8.0.181-zulu

उनकी साइट से :

SDKMAN! अधिकांश यूनिक्स आधारित प्रणालियों पर कई सॉफ्टवेयर डेवलपमेंट किट के समानांतर संस्करणों के प्रबंधन के लिए एक उपकरण है। यह उम्मीदवारों को स्थापित करने, स्विच करने, हटाने और सूचीबद्ध करने के लिए एक सुविधाजनक कमांड लाइन इंटरफेस (सीएलआई) और एपीआई प्रदान करता है।

स्थापित करने के लिए JDK के अन्य संस्करणों को देखने के लिए:

$ sdk list java

0

मैं gitlab ci के साथ एक ही मुद्दे का सामना कर रहा था, इस मुद्दे को ठीक करने के maven:3-jdk-8लिए maven छवि को बदल रहा था maven:3.6.0-jdk-8-alpine। Btw मैं भी साथ परीक्षण किया, maven:3.6.0-jdk-8लेकिन यह न तो काम नहीं किया।


0

यह अभी भी के लिए एक मुद्दा है surefire - v2.22.2के साथ maven:3.6-jdk-8-alpine। समस्या को ठीक करने के लिए, निम्न कोड को pom.xml(maven plugin के रूप में) जोड़ें

...
<plugin>    
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId>  
    <configuration>
        <forkCount>0</forkCount>
    </configuration>
</plugin>
...

-1

अगर मेरी तरह आप अपनी पाइपलाइन में मुद्दे हैं (मेरे लिए यह GitLab में है, लेकिन जो कुछ भी है) और यदि आप Maven JDK 8 Docker छवि का उपयोग कर रहे हैं।

आप प्रतिस्थापित कर सकते हैं

image: maven:3.5.4-jdk-8

अंतिम कार्य निर्माण द्वारा

image: maven@sha256:b37da91062d450f3c11c619187f0207bbb497fc89d265a46bbc6dc5f17c02a2b

1
समस्या डेबियन के लिए नवीनतम jdk8 से आती है, मेरी राय में इसके आसपास की कोशिश करने की तुलना में मूल समस्या को "ठीक" करना बेहतर है।
सिल्डोरिस

Sha256 ध्वनि मुश्किल है और आपको डर लगता है? वास्तव में अन्य उत्तर चारों ओर एक काम की तरह लग रहे हैं, अचूक से कुछ सुविधा को अक्षम करें, यहां बस अपने काम करने वाले पोम या पाइपलाइन को बदलने के बिना अंतिम काम करने वाली छवि का उपयोग करने के बारे में है जो कि एक काम है।
अमरदेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.