ग्रहण - java.lang.ClassNotFoundException


95

ग्रहण से बाहर अपना ज्यूनिट-टेस्ट शुरू करने की कोशिश करने पर, मुझे "क्लासनॉटफ़ाउंड एक्ससेप्शन" मिलता है। कंसोल से "एमवीएन टेस्ट" चलाते समय - सब कुछ ठीक काम करता है। इसके अलावा, ग्रहण में कोई समस्या नहीं बताई गई है।

मेरी परियोजना संरचना निम्नलिखित है:

  • मूल परियोजना (पोम-पैकेजिंग)
    • वेब परियोजना (युद्ध-पैकेजिंग - मेरा JUnit- परीक्षण यहाँ है)
    • फ्लेक्स परियोजना
    • कॉन्फ़िगरेशन प्रोजेक्ट

संपादित करें: कक्षा कैसे नहीं मिल सकती है? यह कोई विशेष पुस्तकालयों के साथ एक सरल HelloWorld-Application है।

यहाँ मेरा JUnit का रन-विन्यास है: alt text http://www.walkner.biz/_temp/runconfig.png


टेस्टक्लास (लेकिन जैसा कि मैंने कहा; यह एक साधारण हैलोवर्ल्ड के साथ काम नहीं करता है ...):

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import biz.prognoserechnung.domain.User;
import biz.prognoserechnung.domain.UserRepository;
import biz.prognoserechnung.domain.hibernate.UserHibernateDao;

public class UserDaoTest {
/**
 * the applicationcontext.
 */
private ApplicationContext ctx = null;

/**
 * the user itself.
 */
private User record = null;

/**
 * Interface for the user.
 */
private UserRepository dao = null;

@Before
public void setUp() throws Exception {
String[] paths = { "WEB-INF/applicationContext.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
dao = (UserHibernateDao) ctx.getBean("userRepository");
}

@After
public void tearDown() throws Exception {
dao = null;
}

@Test
public final void testIsUser() throws Exception {
Assert.assertTrue(dao.isUser("John", "Doe"));
}

@Test
    public final void testIsNoUser() throws Exception {
    Assert.assertFalse(dao.isUser("not", "existing"));
        Assert.assertFalse(dao.isUser(null, null));
        Assert.assertFalse(dao.isUser("", ""));
    }
}

3
मुझे एक ही त्रुटि मिलती है जब एक सरल हैलोवर्ल्ड क्लास चलाने की कोशिश की जाती है जिसमें कोई JUnit शामिल नहीं है ... अधिक सटीक: java.lang.NoClassDefFoundError: HelloWorld इसके कारण: java.lang.ClassNotFoundException: HelloWorld
swalkner

ClassNotFoundException को तब फेंका जाता है जब किसी वर्ग पर प्रतिबिंबित करने की कोशिश की जाती है। NoClassDefFoundError तब फेंका जाता है जब आप सामान्य विधि कॉल में कक्षा का उपयोग करने का प्रयास कर रहे हों।
akf

क्या आप अपने परीक्षण वर्ग के लिए कोड दिखा सकते हैं?
akf

क्या आपने अपने आप निर्माण चालू या बंद कर दिया है?
जॉन

निर्माण स्वचालित रूप से चालू है
स्वालकनर

जवाबों:


194

मैं कई बार उस स्थिति में आया हूँ और, बहुत प्रयासों के बाद, मुझे इसका समाधान मिला।

अपने प्रोजेक्ट बिल्ड-पथ की जाँच करें और प्रत्येक फ़ोल्डर के लिए विशिष्ट आउटपुट फ़ोल्डर सक्षम करें। यद्यपि आपके प्रोजेक्ट के प्रत्येक स्रोत-फ़ोल्डर में एक-एक करके जाएं और आउटपुट फ़ोल्डर सेट करें जो मावेन का उपयोग करेगा।

उदाहरण के लिए, आपके वेब प्रोजेक्ट का src/main/javatarget/classes तहत होना चाहिए , टेस्ट कक्षाओं का target/test-classesभी वेब प्रोजेक्ट के तहत होना चाहिए और इसी तरह।

इस कॉन्फ़िगरेशन का उपयोग करने से आप ग्रहण में इकाई परीक्षणों को निष्पादित कर सकेंगे।

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

आशा करता हूँ की ये काम करेगा।


1
हाय कार्लोस, आपकी सलाह के लिए बहुत बहुत धन्यवाद। लेकिन यह मदद नहीं की, दुर्भाग्य से। मैंने स्रोत फ़ोल्डरों के साथ-साथ src / main / resource (applicationContext.xml), कुछ गुणों - लक्ष्य / वर्गों के लिए / src / main / java (लक्ष्य / कक्षाएं) और / src / test / java (लक्ष्य / परीक्षण-वर्ग) को जोड़ा। )। समान समस्या - जब मेरे src / test / java / UserDaoTest.java को Eclipse से JUnit-test के रूप में शुरू करते हैं, तो मुझे "क्लास नहीं मिला UserDaoTest java.lang.ClassNotFestException: UserDaoTest"। कम से कम, यह थोड़ा अलग है तो मूल त्रुटि संदेश ...
स्वाल्नर

5
आप सही रास्ते पर हैं, जांचें कि क्या UserDaoTest वर्ग आपकी फ़ाइल प्रणाली के अनुरूप आउटपुट फ़ोल्डर में है (जैसा कि आप जानते हैं, ग्रहण आपकी सभी स्रोत फ़ाइलों को संकलित करता है और इसे निर्दिष्ट आउटपुट फ़ोल्डर में दूसरों के बीच में रखता है, परीक्षण शुरू करने में सक्षम)। यदि वर्ग आउटपुट फ़ोल्डर में प्रकट नहीं होता है, तो इस विशिष्ट फ़ोल्डर के लिए बिल्ड पथ के शामिल किए जाने / बहिष्करण फ़िल्टर की जाँच करें। सौभाग्य।
कार्लोस

मेरे लिए यह समस्या ठीक नहीं हुई। यह पता चला कि यह एक AspectJ मुद्दा था। यदि आप AspectJ का उपयोग करने की कोशिश कर रहे हैं और AspectJ क्षमताओं को पढ़ने की कोशिश कर रहे हैं - मेरे लिए काम किया
स्टीफन हैबरल

1
एक ही मुद्दा था। मुझे लगता है कि यह एक ग्रहण परियोजना है - मावेन - गिट मुद्दा। यह वास्तव में इसे कम नहीं करता है, लेकिन सभी मेटाडेटा फ़ोल्डर (.project, .whatever ...) को पोंछ रहा है, परियोजना को हटा रहा है और केवल एक मावेन प्रोजेक्ट के रूप में पुन: आयात कर रहा है जो मेरे लिए काम कर रहा है। मुझे यह भी पता चला कि कुछ को पता नहीं था कि ग्रहण-जूनिट कर सकता है: परीक्षण पद्धति को उजागर करना और रन-जुनिट का चयन करना केवल उस विशेष परीक्षा-पद्धति को चलाता है, संपूर्ण परीक्षा को नहीं! कोई और अधिक @Ignoreसब जगह और जीयूआई शॉर्टकट से अधिक!
BGS

उसी मुद्दे का सामना कर रहा था, मैंने बस ग्रहण -> प्रोजेक्ट -> स्वच्छ का उपयोग किया और यह काम किया। मवन क्लीन काम नहीं किया।
नूतन

46

कार्लोस के दृष्टिकोण ने मदद की! ग्रहण - java.lang.ClassNotFoundException

जूनियर रन कॉन्फ़िगरेशन के क्लासपैथ की जाँच करने का प्रयास करें:

  1. अपने रन कॉन्फ़िगरेशन खोलें
  2. आप जिस जूइट-टेस्ट को शुरू करना चाहते हैं, उस पर क्लिक करें
  3. क्लासपाथ टैब पर जाएं
  4. एक फ़ोल्डर जोड़ने की कोशिश करें (उपयोगकर्ता प्रविष्टियों पर क्लिक करें, उन्नत पर क्लिक करें, ऐड फ़ोल्डरों पर क्लिक करें, ठीक पर क्लिक करें और अपने परीक्षण वर्गों के लिए आउटपुट फ़ोल्डर खोजें (जो आप प्रोजेकप्रोटीज़ जावा बिल्ड पाथ, सोर्स के तहत पाते हैं))

मेरे लिये कार्य करता है।


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

मुझे नहीं लगता कि यह क्रिया आवश्यक रूप से एक आवश्यक निर्देशिका को जोड़ती है जितना कि कुछ को पुनः लोड करने के लिए ट्रिगर करता है। एक सफल रन के बाद आप नई जोड़ी गई निर्देशिका को तुरंत हटा सकते हैं और इसे सामान्य की तरह काम करना चाहिए। इसके अलावा, ऊपर टिप्पणी सही है। मई कार्लोस से संदर्भित संदर्भ को आगे बढ़ाना चाहते हैं।
जागा

मुझे इस समस्या के साथ और अधिक उपयोगी होने के लिए एक और SO प्रश्न का उत्तर मिला: stackoverflow.com/a/5718520/901641
ArtOfWarfare

16

आपका बिल्ड क्लासपथ सही है, यही कारण है कि आप संकलन कर सकते हैं। अपने JUnit के लिए क्लासपैथ की जाँच करने की आवश्यकता है। रन मेनू पर जाएं और 'ओपन रन डायलॉग' चुनें। वहाँ आपको विकल्प के रूप में JUnit के साथ बाईं ओर एक पेड़ देखना चाहिए। उस नोड को खोलें और अपना परीक्षण खोजें और चुनें। दाएँ फलक पर आपको classpath के लिए एक टैब दिखाई देगा। यह सुनिश्चित करने के लिए एक नज़र डालें कि आपकी कक्षा जो परीक्षण करने की कोशिश कर रही है वह तुरंत मिल जाएगी।

संपादित करें:

यह मावेन के साथ एक मुद्दा लगता है और इसके रिलीज के बाद के व्यवहार को डिफ़ॉल्ट एक्लिप्स आउटपुट फ़ोल्डर्स में बदल दिया। मैंने देखा है जहां समाधान वर्णित है

  • बूटक्लासपाठ में मावे को रखकर काम करता है, या
  • चल रहा mvn clean testहै या
  • आपके सभी ग्रहण प्रोजेक्ट्स को रिफ्रेश करने से समस्या का समाधान होता है
  • अपनी परियोजना पर जा रहे हैं और Maven-> अपडेट कॉन्फ़िगरेशन का चयन करके समस्या को हल करते हैं

पहले तीन के साथ, आवर्ती मुद्दे की रिपोर्टें थीं। अंतिम मुझे सबसे अच्छा लगता है, लेकिन अगर यह काम नहीं करता है, तो कृपया दूसरों को आज़माएं।

यहाँ और यहाँ कुछ जानकारी है


1
दुर्भाग्य से, "मावेन => अपडेट कॉन्फ़िगरेशन" समस्या को बिल्कुल हल नहीं करता है ... रिवर्स सच है; यह निर्माण पथ कॉन्फ़िगरेशन हटाता है ... या इसका मतलब यह है कि कुछ अन्य कॉन्फ़िगरेशन खराब है?
स्वाल्नर जूल

जैसा कि @swalkner ने बताया है: Maven => अपडेट कॉन्फ़िगरेशन बिल्ड पथ कॉन्फ़िगरेशन को बर्बाद कर देगा। किसी कारण से जो मुझे हटा देता है, प्लगइन बहिष्करण फ़िल्टर सेट करेगा जिसे मुझे कमांड चलाने के बाद मैन्युअल रूप से निकालना होगा
स्टीफन हैबरल

"रन मेनू पर जाएं और 'ओपन रन डायलॉग' चुनें। हुह ?? कहाँ है?
बेरीट लार्सन अगे

4

समस्या आपके बिल्ड फ़ोल्डर में वर्ग फ़ाइल गुम हो सकती है। एक समाधान परियोजना को साफ करता है और इसका पुनर्निर्माण करता है।


4

रन एक्स कॉन्फ़िगरेशन के क्लासपैथ टैब के अंदर क्लासपाथ निर्दिष्ट करने के लिए (क्लासपैथ लंबाई सीमाओं से बचने के लिए) [x] को सक्षम करने के लिए अस्थायी JAR का उपयोग करें

यदि आपकी परियोजना बहुत बड़ी है और आपके पास अन्य सिबलिंग प्रोजेक्ट्स और मावेन निर्भरताओं में से बहुत सारी निर्भरताएँ हैं, तो आप क्लासपैथ की लंबाई सीमाओं से टकरा सकते हैं और यह एकमात्र समाधान प्रतीत होता है (इसके अलावा निर्देशिका बनाने के लिए आप स्थानीय मैवेन रेपियर को कम कर सकते हैं (हमारा पहले से ही शुरू होता है) सी पर: / एम 2)

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


3

यहाँ कई जटिल सुझाव हैं।

मैं इस समस्या का सामना कई बार मावेन परियोजनाओं के साथ कर रहा हूँ ताकि 'एन' ड्रॉप द्वारा संसाधनों को इधर-उधर खिसकाया जा सके, या क्लास के नामों का रिफ्लेक्टरिंग किया जा सके।

यदि ऐसा होता है, .javaतो टर्मिनल / फ़ाइल ब्राउज़र द्वारा किसी अन्य स्थान पर समस्या परीक्षण मामले ( ) को कॉपी (स्थानांतरित नहीं) करें ,right-click -> Delete ग्रहण में और विकल्प दिए जाने पर डिस्क पर डिलीट करने के लिए, कॉपी की गई फाइल को मूल फ़ाइल स्थान पर ले जाएं / कॉपी करें, फिर ग्रहण में अपनी परियोजना का चयन करें और संसाधनों को ताज़ा करने के लिए F5 दबाएं।

यह त्वरित और आसान है, और हर बार मेरे लिए समस्या को स्थायी रूप से तय किया है।


मुझे यह पूछने के लिए लुभाया जाता है कि क्या यह आपकी समस्या को स्थायी रूप से , या हर बार तय कर रहा है ... लेकिन मुझे वही मिलता है जो आप का मतलब है, और, आश्चर्यजनक रूप से, इसने मेरे लिए चाल चली।
आमोस एम। बढ़ई

3

मुझे ठीक वही समस्या थी लेकिन मुझे यह समझ में आया! अपनी प्रोजेक्ट फ़ाइल पर जाएं और उस पर राइट क्लिक करें, फिर RefreshF5 पर क्लिक करें या हिट करें । फिर कोशिश करें और इसे चलाएं। अगर यह अभी भी काम नहीं करता है, तो इसे भूल जाओ, क्योंकि मेरे पास एक ही समस्या थी और इसका मतलब है कि आप ग्रहण का संस्करण कचरा है।


2

यह मेरी समस्या का समाधान था। बेशक, कई चीजें इसके होने का कारण बन सकती हैं। मेरे लिए यह था कि Maven2 (ग्रहण के लिए प्लगइन नहीं) एक अलग बिल्डर (पहलू) का उपयोग करने के लिए ग्रहण प्रोफ़ाइल सेट कर रहा था, लेकिन मेरे पास ग्रहण में प्लगइन नहीं था ।/

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

चीयर्स रेमन बकलैंड


2

सचिन का अधिकार: यहां तक ​​कि सही वर्ग पथ के साथ, समस्याएं टैब दिखाएगा कि कुछ निर्भरता या संसाधन / परियोजना में त्रुटि है जिसे मावेन के लिए स्वचालित रूप से कक्षाएं बनाने और बनाने के लिए आपको अपने परीक्षण वर्ग में बदलाव करने या बनाने की आवश्यकता है। ।

"नमस्ते,

इसका बहुत पुराना जुला (जो वर्ष) है लेकिन मुझे भी यही समस्या थी।

वास्तविक समस्या में पाया गया कि ग्रहण जावा फ़ाइल के लिए वर्ग फ़ाइल बनाने में सक्षम नहीं था, वर्गपथ उचित था।

समस्या टैब देखें और जांचें कि क्या आपका प्रोजेक्ट कुछ / फ़ाइल याद कर रहा है। आप एक नई परियोजना बना सकते हैं और एक-एक करके फाइलें जोड़ सकते हैं और तब तक उनका निर्माण कर सकते हैं जब तक कि यह संकलन करना और कक्षाएं बनाना बंद न कर दें (कक्षाओं के लिए कार्यक्षेत्र / प्रेज / बिन / पैकेज / फ़ोल्डर की जांच करें)

इसकी अजीब लेकिन सच है, परित्यागता अनुपालन में विफल रही थी क्योंकि 4 में से 20 जावा फाइलें एक एकल छवि का उपयोग कर रही थीं जो गायब थी। और परिणामस्वरूप जावा फ़ाइल में से कोई भी संकलित नहीं की गई थी।

CLASSPATH यहां कोई मुद्दा नहीं है। "


2

हमारे पास सटीक अपवाद थे (स्प्रिंग 7 सोर्स टूल्स, टॉमकैट का उपयोग करते हुए, विन 7 पर) और इसका कारण यह था कि हमने सबडोमैन.जवा से सबडोमेन.जवा (डी बनाम डी) के लिए एक फ़ाइलनाम (एक फ़ाइल का नाम बदला) को फिर से चालू कर दिया था और किसी तरह हालांकि यह स्प्रिंगस्सोर्स से टकरा गया था नया नाम Subdomain.java दिखा रहा है। इसका समाधान फ़ाइल (स्प्रिंगसोर्स के माध्यम से) को हटाना था और इसे फिर से Subdomain.java नाम से बनाया और इसकी पूर्व सामग्री को कॉपी-पेस्ट किया। इतना ही आसान।


मैं हमेशा जूनट टेस्ट मामलों को चलाता था, जब तक कि मैं प्रोग्राम को चलाता नहीं था जो विंडोज़ को अपग्रेड करने से पहले संगतता के लिए पीसी की जांच करता है। ऐसा लगता है कि कुछ को तोड़ने के लिए, मैं JUnit परीक्षण मामलों को फिर से चलाने में असमर्थ हूं। (और सभी मौजूदा उत्तर काम नहीं करते हैं)
कॉफ़डेवलप्टर

2

मैं उस बुलिट पथ को हल करता हूं ---> लाइब्रेरी ---> लाइब्रेरी जोड़ें ---> जूनिट चेक junit4


1

क्लिक करें project->properties->Java build path->Sourceऔर जांचें कि प्रत्येक srcफ़ोल्डर अभी भी मौजूद है या हाल ही में हटा दिया गया है। किसी भी लापता पथ या गलत पथ को ठीक करें और परीक्षण को फिर से बनाएं और चलाएं। यह समस्या को ठीक करेगा।


1

मेरे द्वारा किए गए सभी गुण थे -> जावा बिल्ड पाथ -> ऑर्डर और एक्सपोर्ट -> सभी अनचेक बॉक्स को सक्षम किया -> जूनित को ऊपर ले जाया गया


1

कोशिश की

Link : [here][1]

Open your run configurations
Click on the jUnit-Test you want to start
go to the classpath tab
Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source))

के बाद काम किया

मावेन 2 जीवन चक्र >> परीक्षण


1

मैंने इस पृष्ठ पर सभी समाधानों की कोशिश की थी: ताज़ा परियोजना, पुनर्निर्माण, सभी परियोजनाएँ साफ़, ग्रहण को पुनः आरंभ करें, परियोजनाओं को फिर से आयात करें (यहाँ तक कि) फिर से बनाएँ, मावेन और ताज़ा करें। कुछ भी काम नहीं किया। क्या किया था काम एक के लिए वर्ग को कॉपी किया गया था नया नाम जो कि ठीक है - विचित्र लेकिन सच है।

कुछ समय के लिए इसे लगाने के बाद, मैंने इसे ठीक किया:

  1. Runमेनू के माध्यम से
  2. चुनते हैं Run Configurations
  3. रन कॉन्फ़िगरेशन चुनें जो आपकी इकाई परीक्षण से जुड़ा हुआ है।
  4. Run Configurationडिलीट को दबाकर या लाल X पर क्लिक करके प्रविष्टि को हटाना।

कैश्ड रन कॉन्फ़िगरेशन के साथ कुछ खराब हो गया होगा।


1
बहुत समय बर्बाद होने के बाद मैंने ऊपर दिए गए चरणों को पूरा किया। मैंने तब सभी रन टेस्ट कॉन्फ़िगरेशन को हटाने के लिए एक वीरतापूर्ण निर्णय लिया और अब मेरा कोई भी परीक्षण क्लासपाथ में नहीं पाया जा सकता है, भले ही नया रन कॉन्फ़िगरेशन स्पष्ट रूप से इसमें प्रोजेक्ट दिखाता है (नीचे मावेन निर्भरता के साथ)। मैं यह भूलता रहता हूं कि कैसा ग्रहण है। उसके बाद कोई भी परीक्षण ग्रहण के साथ नहीं चलाया जा सका (इससे पहले कि मैं किसी विशेष परीक्षा का चयन कर सकूं - ठीक है)। अंत में, मैंने नीचे KomodoDave सुझाव की कोशिश की। यह तय है कि चीजें ... इस लूप के माध्यम से कूदने के लिए अद्भुत लूप्स (एक श्रृंखला का नवीनतम ..)
जस्टिन

1

ग्रहण से परियोजना को हटाना (हार्ड डिस्क से नहीं) जो एक तरह से कार्यक्षेत्र की सफाई कर रही है और परियोजना को फिर से ग्रहण में लाने के लिए फिर से मेरे लिए काम किया है।


1

आमतौर पर यह समस्या जावा एप्लिकेशन को चलाते समय होती है java टूल क्लास फाइल खोजने में असमर्थ होता है।

ज्यादातर मावेन परियोजना में हम इस मुद्दे को देखते हैं क्योंकि एक्लिप्स-मावेन सिंक मुद्दा। इस समस्या को हल करने के लिए: Maven-> अपडेट कॉन्फ़िगरेशन


0

क्या आपने अपने प्रोजेक्ट रूट पर राइट क्लिक करने की कोशिश की, "गुण" का चयन किया, और यह सुनिश्चित किया कि CLASSPATH सही है? अगर मुझे सही से याद है, तो आप इसे कैसे करते हैं।

ग्रहण के तरीके के बारे में कुछ भी इकाई परीक्षण करता है जिससे आपको रनवे CLASSPATH में जून JAR को एक विशेष तरीके से जोड़ना पड़ता है?

मैं IntelliJ का उपयोग करता हूं, इसलिए मेरे पास ये मुद्दे नहीं हैं।

मैं स्वयं ग्रहण की जाँच करूँगा, लेकिन मैं इसे अपने डेस्कटॉप पर नहीं रखना पसंद करता हूँ।


ठीक है, एक ग्रहण बनाम इंटेलीज-चर्चा के बिना; मैं इसे एक्लिप्स चलाना पसंद करूंगा ... और मैंने जावा बिल्ड पाथ की जाँच की - जावा जेडीके है, और मुझे अपने हैलोवर्ल्ड उदाहरण के लिए किसी और चीज की आवश्यकता नहीं है ... मुझे लगता है कि इसके साथ कुछ करना होगा 'सोर्स फोल्डर ऑन बिल्ड पाथ' ... मैंने उन्हें उस फ़ोल्डर में सेट किया जहां मेरा पैकेज शुरू होता है ... मुझे लगता है कि यह सही है।
स्वल्पनर

आपको JDK के अलावा किसी चीज़ की ज़रूरत है - वह है HelloWorld.class, सही का रास्ता? "निर्माण पथ पर स्रोत फ़ोल्डर्स" - बेहतर लगता है। मानने की जरूरत नहीं है, एक प्रयोगवादी बनें और कोशिश करें। यदि आप सही हैं तो ग्रहण आपको बताएगा।
duffymo

0

हम्म, थोड़ा विचित्र लग रहा है, इसे कक्षा के शीर्ष पर निम्नलिखित एनोटेशन के साथ चलाने की कोशिश करें:

@RunWith(SpringJUnit4ClassRunner.class)
public class UserDaoTest {
}

और मुझे पता है कि तुम इसके साथ कैसे हो।

जाँचें कि आपने अपने आप निर्माण किया है साथ ही सक्षम भी। यदि आप यह सुनिश्चित करना चाहते हैं कि आपके परीक्षण वर्गों को मावेन लक्ष्य फ़ोल्डर (और किसी भी बिन फ़ोल्डर जो ग्रहण का उपयोग हो सकता है) का सही ढंग से संकलित किया जा रहा है। क्या आप m2eclipse का उपयोग कर रहे हैं, साथ ही मुझे यह थोड़ा समस्याग्रस्त लगता है।


आपके उत्तर के लिए बहुत बहुत धन्यवाद, लेकिन फिर भी: यह या तो काम नहीं करता है; सबसे पहले, मुझे स्प्रिंग-टेस्ट.जर शामिल करना है, फिर दूसरी निर्भरता पूरी नहीं है। मुझे समझ में नहीं आता कि यह एक ही पैकेज में एक साधारण हेलोवर्ल्ड-क्लास के साथ काम क्यों नहीं करता है। और वहाँ, मुझे आपके द्वारा सुझाए गए एक "हैक" की आवश्यकता नहीं है ... कुछ को "क्लासपैथ" या कुछ इसी तरह गलत होना चाहिए, लेकिन मुझे वह नहीं मिलता है / जहां मुझे जांचना है ...
स्वाल्नर

0

मेरी समस्या का समाधान जो समान था: काम अमान्य थे। यदि आप प्रोजेक्ट की .classpath फ़ाइल देखते हैं, तो आपको कुंजी / मान प्रकार = "lib" के साथ classpathentry टैग दिखाई देंगे। मेरे कुछ गलत थे।

जब तक मैं मान्यता सेटिंग्स को बंद नहीं कर देता, मुझे यह पता नहीं चला। यानी, JSP फाइलों आदि में इतनी त्रुटियां थीं कि क्लासपाथ त्रुटियां स्पष्ट नहीं थीं (या संभवत: यहां तक ​​कि दिखावा भी)। नतीजतन, कुछ भी गंतव्य आउटपुट फ़ोल्डर में संकलित नहीं किया जा रहा था, लेकिन क्यों पर कोई सहायक त्रुटियां नहीं हैं।


0

कृपया JDK को Windows> प्राथमिकताएँ> जावा> इंस्टॉल किए गए JRE से ठीक करने के लिए इंगित करें।

Jre की ओर इशारा मत करो, एक उचित JDK की ओर इशारा करो। मैंने JDK 1.6U29 की ओर इशारा किया और परियोजना को फिर से ताज़ा किया।

इसके बाद, यह मुद्दा समाप्त हो गया है और जॉनीट टेस्ट ठीक काम कर रहे हैं।

धन्यवाद,
-तापस


0

मैंने हाल ही में एक्लिप्स में एक ही त्रुटि में भाग लिया है, अर्थात, ग्रहण आईडीई यूनिट परीक्षण वर्ग को नहीं पा सकता है, चाहे मैं विन्यास कैसे बदलूं। पिछली पोस्टों से यहां और अन्य वेब साइटों पर सीखते हुए, मैंने "चेक कॉन्फ़िगरेशन" और "जावा बिल्ड पाथ" दोनों में, क्लासपाथ और स्रोत जानकारी की दोहरी जाँच की और ट्रिपल और सोर्स फ़ोल्डर और लाइब्रेरीज़ को ऊपर-नीचे किया। "विंडोज़ को कॉन्फ़िगर करें, और मैंने प्रोजेक्ट को साफ भी किया है और इसे फिर से बनाया है, लेकिन मेरे लिए कोई भी ट्रिक काम नहीं करती है। विशिष्ट जावा परियोजना एक पुरानी ANT संकलित परियोजना है और इसमें बहुत सारे जार ग्रहण लाइब्रेरी में शामिल हैं।

फिर, मैंने एक मुख्य () पद्धति को जोड़ने के लिए यूनिट टेस्ट क्लास को बदल दिया और JUnit टेस्ट के बजाय एक जावा एप्लिकेशन को "रन एज़" पर राइट क्लिक किया, और अचानक, एक्लिप्स जागने लगता है और क्लास को सही तरीके से पहचानता है। बाद में, मैंने इसे वापस एक यूनिट परीक्षण अनुप्रयोग में बदल दिया, और यह अभी भी काम कर रहा है।

यह ग्रहण में एक बग प्रतीत होता है, मैं अनुमान लगा रहा हूं कि बड़ी संख्या में पुस्तकालय (> 260) मेरे जेयूनाइट वर्ग का पता लगाने की जेवीएम की क्षमता को भ्रमित कर सकते हैं।


0

मैं इस मुद्दे से भी प्रभावित था और अपने मामले के लिए पर्याप्त समाधान के साथ आने में सक्षम था। यदि आपकी ग्रहण परियोजना में आपकी प्रोजेक्ट रूट में एक .classpath फ़ाइल है (इसे पैकेज एक्सप्लोरर दृश्य के बजाय नेविगेटर दृश्य में देखें), सुनिश्चित करें कि आपका Maven classpathentry आपके JRE कंटेनर वर्गपथरी से पहले दिखाई देता है।

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>

यदि आपकी परियोजना में .classpath फ़ाइल नहीं है, तो आप ऑर्डर और निर्यात स्विच करने के लिए अपनी परियोजना के जावा बिल्ड पथ को संपादित कर सकते हैं। यदि आपके प्रोजेक्ट में .classpath फ़ाइल है और आप केवल जावा बिल्ड पाथ में अपना ऑर्डर बदलते हैं, तो आप देखेंगे कि ऑर्डर प्रभावित नहीं हुआ है और समस्या उत्पन्न होती रहेगी।

और एक परियोजना-> परिवर्तन करने के बाद स्वच्छ कभी भी चीजों को नुकसान नहीं पहुंचाता है।


0

सुनिश्चित करें कि आपके परीक्षण लॉन्च कॉन्फ़िगरेशन में निम्न पंक्तियाँ नहीं हैं, या स्वचालित मावेन निर्भरता प्रबंधन को सक्षम करने का प्रयास करें।

<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>

0

मैंने इस लंबी पोस्ट में जो कुछ भी पढ़ा, और अविश्वसनीय रूप से, मेरे लिए जो कुछ भी काम किया, मैंने कोशिश की कि वह टेस्ट क्लास पर क्लिक करने और चयन करने के बजाय Run as JUnit test, टेस्ट पद्धति पर क्लिक करके और जैसा चल रहा है JUnit test। मुझे कोई जानकारी नहीं है की क्यों?


0

ग्रहण के अंदर से JUnit परीक्षण ने मुझे NoClassDefFoundError भी दिया। कमांड लाइन से 'mvan क्लीन टेस्ट' चलाने से मुझे कई जार पर निम्नलिखित त्रुटि हुई: अमान्य LOC हैडर (खराब हस्ताक्षर) स्थानीय A2 रिपॉजिटरी से इन जार को हटाने और 'mvan क्लीन टेस्ट' चलाने से मेरी समस्या फिर से हल हो गई।


0

मुझे भी यही समस्या थी। मैंने जो कुछ भी किया था,

मैं)। सृजित ग्रहण कलाकृतियाँ

mvn clean eclipse:eclipse

ii)। प्रोजेक्ट को रिफ्रेश करें और अपने जूनियर टेस्ट को रीयर करें। ठीक काम करना चाहिए।


0

इसके अलावा, "वेब परिनियोजन असेंबली" संवाद को डबल-चेक करें।

यह पाया जा सकता है: परियोजना गुण-> तैनाती विधानसभा।

हाल ही में मैंने एक ग्रहण प्लगइन को अपनी वेब परियोजनाओं में से एक को संशोधित किया था, और इसने ~ रहस्यमय तरीके से जोड़ा ~ मावेन परीक्षण निर्देशिकाओं / src / test / java, / src / test / resource को परिनियोजन असेंबली में जोड़ा। UGGGG !!!

यही कारण है कि मेरे प्रोजेक्ट ने ठीक काम किया जब मैंने टॉमकैट पर सिर्फ सीधा मावेन बनाया और तैनात किया, कोई क्लासनॉटफ़ाउंड एक्सेप्शन नहीं ... हालांकि, जब मैंने ग्रहण, व्हाममो के माध्यम से तैनाती की थी !! मुझे ClassNotFoundException मिलनी शुरू हो गई है क्योंकि TestCode की तैनाती हो रही है।

एरिक


0

इसका मतलब है कि आपके pom.xml में अनसुलझे मुद्दे हैं। अपने अनुसार समस्याओं के समाधान को खोलें। तब आप क्लासॉन्फ़फ़ाउंडएक्ससेप्शन का सामना किए बिना परीक्षण मामलों को सफलतापूर्वक चलाने में सक्षम होंगे।


0

जावा बिल्ड पाथ में क्लासपैथ कलाकृतियों के क्रम को बदलते हुए इसे मेरे लिए हल कर दिया।

  1. प्रोजेक्ट पर राइट क्लिक करें और प्रोजेक्ट बिल्ड पथ पर जाएं।
  2. ऑर्डर पर जाएं और निर्यात करें टैब और स्रोतों के बाद जेआरई सिस्टम लाइब्रेरी को स्थानांतरित करें।

इसे ठीक करना चाहिए।

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