java.lang.NoClassDefFoundErun in junit


82

मुझे अपने जूनियर टेस्ट कोड में जावा में यह त्रुटि मिल रही है। मैंने नेट पर देखा और यह कहता है कि मुझे कक्षा में जूनियर.जर जोड़ने की जरूरत है।

एक्लिप्स में मैंने इसे प्रोजेक्ट प्रॉपर्टीज विंडो के क्लासपाथ में जोड़ा है लेकिन मुझे अभी भी इनिशियलाइज़ेशन एरर मिलता है। मुझे क्या करना चाहिए..?

यह त्रुटि का पूर्ण पता है:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 25 more

1
त्रुटि के अनुसार कौन सा वर्ग गायब है?
बालुसक

जवाबों:


105
  1. पैकेज एक्सप्लोरर में अपनी परियोजना पर राइट क्लिक करें> गुण क्लिक करें
  2. जावा बिल्ड पाथ> लाइब्रेरी टैब पर जाएं
  3. 'लाइब्रेरी जोड़ें' बटन पर क्लिक करें
  4. JUnit का चयन करें
  5. अगला पर क्लिक करें।
  6. ड्रॉपडाउन बटन JUnit4 या अन्य नए संस्करणों में चयन करें।
  7. समाप्त क्लिक करें।
  8. फिर ठिक है।

ऐसा करने से JUNIT को लाइब्रेरी में जोड़ा जाता है लेकिन अब यह कहते हैं कि junit.org को हल नहीं किया जा सकता है

5
बस डबल-चेक करें कि आपके पास हैमरेस्ट लाइब्रेरी भी क्लासपाथ पर है। JUnit 4 का वर्तमान संस्करण पूरी तरह से समावेशी होना चाहिए, लेकिन कभी-कभी लोग पैकेज को विभाजित करते हैं।
बेरिन लोरिट्श

अगर मैं लिनक्स कमांड लाइन का उपयोग कर रहा हूं तो मैं कैसे आगे बढ़ूं? मैं इस जार को कहाँ जोड़ूँ?
विपिन v१६

उपरोक्त चरण ठीक काम कर रहे हैं और यह ग्रहण प्लगइन फ़ोल्डर से जार ले रहा है। लेकिन अगर हम junit jar फाइल को कॉन्फ़िगर बिल्ड पथ में बाहरी जार के रूप में जोड़ते हैं तो यह सही काम करना चाहिए? यह मेरे लिए काम नहीं कर रहा था
विनीत भास्करन

20
  1. ग्रहण -> शीर्ष मेनू -> भागो -> विन्यास चलाएँ
  2. अपने परीक्षण की सभी घटनाओं को हटा दें। आपका परीक्षण YourTest.Method_1 () के रूप में दिखाई दे सकता है। उसे भी डिलीट कर दो।
  3. फिर से दौड़ना। ग्रहण को एक नए विन्यास का निर्माण करने दें।

परिशिष्ट: स्थानीय रूप से मैंने एक "उपयोगकर्ता पुस्तकालय" बनाया है और मेरी परियोजनाओं में जोड़ा है

hamcrest-core-1.3.jar

junit-4.12.jar


11

वही समस्या हो सकती है यदि आपने JUnit jar को JUnit वेबसाइट से डाउनलोड किया है, लेकिन Hamcrest जार डाउनलोड करना भूल गए - दोनों की आवश्यकता है (निर्देश दोनों को डाउनलोड करने के लिए कहते हैं, लेकिन मैं आगे छोड़ दिया! उफ़)


10

मावेन का उपयोग करते समय, विरूपण साक्ष्य को अपडेट करें: जून से उदाहरण के लिए 4.8.2 से 4.11 तक।


1
यह मेरे लिए एक तय NoClassDefFoundError: org/junit... caused by ClassNotFoundException: org.junit.runners.model.InitializationErrorमैं Junit 4.8 का उपयोग कर रहा था। 4.11 तक काम किया।
एलेक्स

6

ग्रहण पर मैं नीचे दिए गए चरणों का पालन करके उपरोक्त समस्या को हल करने में सक्षम था:

उस परीक्षण फ़ाइल पर राइट-क्लिक करें जिसे आप चलाना चाहते हैं, रन ऐस> - रन कॉन्फ़िगरेशन चुनें -> क्लासपैथ टैब चुनें -> बूटस्ट्रैप प्रविष्टियों का चयन करें -> उन्नत का चयन करें -> लाइब्रेरी जोड़ें का चयन करें -> चयन चयन - अगला -> ड्रॉप-डाउन -> समाप्त से JUnit4 चुनें

फिर अप्लाई-> रन चुनें



2

इन चरणों ने मेरे लिए काम किया जब त्रुटि से पता चला कि फ़िल्टर वर्ग गायब था (जैसा कि इस गलत-द्विगुणित प्रश्न में बताया गया है: JUnit: NoClassDefFoundError: org / junit / runner / मैनिपुलेशन / फ़िल्टर ):

  1. सुनिश्चित करें कि आपकी परियोजना में केवल एक बार संदर्भित JUnit 4 है (मैंने मावेन प्रकृति को भी हटा दिया है, लेकिन मुझे यकीन नहीं है कि इस कदम का समस्या को हल करने में कोई प्रभाव है)
  2. इकाई परीक्षण युक्त फ़ाइल पर राइट क्लिक करें , गुण चुनें, और रन / डीबग सेटिंग्स के तहत, उस फ़ाइल के लॉन्च कॉन्फ़िगरेशन से किसी भी प्रविष्टि को हटा दें। हिट लागू करें और बंद करें।
  3. इकाई परीक्षण वाले प्रोजेक्ट पर राइट क्लिक करें , गुण चुनें, और रन / डिबग सेटिंग्स के तहत, लॉन्च कॉन्फ़िगरेशन से JUnit से जुड़े किसी भी प्रविष्टि को हटा दें। हिट लागू करें और बंद करें।
  4. प्रोजेक्ट को साफ़ करें, और परीक्षण चलाएँ।

इस समाधान के लिए मुझे संकेत देने के लिए इन उत्तरों के लिए धन्यवाद: https://stackoverflow.com/a/34067333/5538923 और https://stackoverflow.com/a/39987979/5538923 )।


1

नीचे दिए गए चरणों का प्रयास करें:

  1. अपने प्रोजेक्ट के रन कॉन्फ़िगरेशन पर जाएं। Classpath टैब में JUnit लाइब्रेरी जोड़ें।
  2. उसी चरणों को पुनः प्रयास करें।

इसने मेरे लिए काम किया।


1

मेरे पास एक ही मुद्दा था, समस्या मुझे परीक्षण कक्षाओं में @ContextConfiguration में थी, मैं सर्वलेट संदर्भ लोड कर रहा था मैं भी सिर्फ परिवर्तन करता हूं:

@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })

सेवा:

@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })

और बस। इस तरह से केवल सभी फ़ाइलों को मेरे परीक्षण पथ में पैटर्न * -context.xml के साथ लोड किया जा रहा है।


1
  1. सुनिश्चित करें कि पर्यावरण चर JUNIT_HOME c: \ JUNIT पर सेट है।
  2. फिर रन कॉन्फ़िगरेशन में> क्लासपैथ का चयन करें> बाहरी जार जोड़-4.11.jar जोड़ें

1

इसका कारण "हैमरेस्ट-कोर" जार क्लासपाथ में नहीं है क्योंकि यह सीधे जूनियर जार के साथ नहीं आता है। तो इसे हल करने के दो तरीके हैं:

  1. प्रोजेक्ट का चयन करें -> बिल्डपैथ -> लाइब्रेरी जोड़ें और जूनिट चुनें (इसमें जूनिट और हैमरेस्ट-कोर दोनों शामिल हैं)
  2. मावेन रेपो से हैमरेस्ट-कोर डाउनलोड करें और इसे अपने क्लासपाथ में जोड़ें।

1

अन्य उत्तरों के साथ मेरे दो सेंट जोड़ना।

जाँच करें कि क्या आपने किसी भी src/main/javaतरह से सामान्य के बजाय अपनी परीक्षा कक्षा का निर्माण नहीं किया है src/test/java। पूर्व ग्रहण में डिफ़ॉल्ट है जब आप किसी भी कारण से एक नया परीक्षण वर्ग बनाते हैं और इसे अनदेखा किया जा सकता है। यह उतना ही सरल हो सकता है।


1

मेरे मामले में, मैंने क्लासपैथ के बजाय अपने पुस्तकालयों को मॉड्यूलपुथ में जोड़ा।

यह केवल तभी काम करता है जब JUnit को Classpath में सही ढंग से जोड़ा जाए।

यहाँ छवि विवरण दर्ज करें


0

यह त्रुटि तब भी आती है यदि क्लासपैथ में हैमरेस्ट-लाइब्रेरी या हैमरेस्ट-कोर के 2 संस्करण मौजूद हैं।

पोम फ़ाइल में, आप अतिरिक्त संस्करण को बाहर कर सकते हैं और यह काम करता है।


0

यहां तक ​​कि Junit4.11.jar के पास हैमरेस्ट-कोर नहीं है। मैंने क्लासपाथ में स्पष्ट रूप से जोड़ा और समस्या हल हो गई।


0

मैं इस वीडियो का अनुसरण कर रहा था: https://www.youtube.com/watch?v=WHPPQGOyy_Y लेकिन परीक्षण चलाने में विफल रहा। उसके बाद, मैंने सभी डाउनलोड की गई फ़ाइलों को हटा दिया और चित्र में चरण का उपयोग करके जूनिट जोड़ दिया।

यहाँ छवि विवरण दर्ज करें


-1

यदि आपके पास जावा का एक से अधिक संस्करण है, तो यह आपके कार्यक्रम में हस्तक्षेप कर सकता है।

मेरा सुझाव है कि आप JCreator डाउनलोड करें।

जब आप ऐसा करते हैं, तो कॉन्फ़िगर करें, विकल्प और JDK प्रोफाइल पर क्लिक करें। जावा के पुराने संस्करणों को सूची से हटा दें। इसके बाद प्ले बटन पर क्लिक करें। आपका कार्यक्रम दिखाई देना चाहिए।

यदि ऐसा नहीं होता है, तो ctrl + alt + O दबाएँ और फिर प्ले बटन को फिर से दबाएँ।

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