Computer >> कंप्यूटर ट्यूटोरियल >  >> समस्या निवारण >> Windows त्रुटियाँ

समाधान: Could not find or load main class

त्रुटि 'Could not find or load main class' तब होती है जब कमांड प्रॉम्प्ट में एक java कमांड का उपयोग करके एक Java प्रोग्राम को लॉन्च किया जाता है जिसमें टर्मिनल में क्लास नाम निर्दिष्ट किया जाता है। ऐसा होने का कारण ज्यादातर क्लास घोषित करते समय उपयोगकर्ता की प्रोग्रामिंग गलती के कारण होता है।

समाधान: Could not find or load main class

जैसा कि पहले उल्लेख किया गया है, यह त्रुटि ज्यादातर सिस्टम से संबंधित नहीं है और उपयोगकर्ता नीचे दिखाए गए कई परिदृश्यों में गलती करता है। आगे बढ़ने से पहले, हम मानते हैं कि आपको Java प्रोग्रामिंग भाषा का बुनियादी ज्ञान है और यह कैसे काम करती है।

Java में 'Could not find or load main class' त्रुटि के कारण क्या हैं?

संदेश 'Could not find or load main class' का अर्थ है कि निष्पादन के लिए क्लास लाने के लिए Java इंजन का पहला चरण विफल हो गया है। java कमांड सही डायरेक्टरी में क्लास को ढूंढने में सक्षम नहीं था।

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

'java <class-name>' सिंटैक्स क्या है?

इससे पहले कि हम समस्या निवारण शुरू करें कि टर्मिनल निष्पादित करने का प्रयास करते समय हमें त्रुटि क्यों लौटा रहा है, पहले हमें कमांड के सिंटैक्स को देखने की आवश्यकता है। यदि आप सही सिंटैक्स का उपयोग नहीं कर रहे हैं, तो आप अनिवार्य रूप से इस त्रुटि का सामना करेंगे।

कमांड का सामान्य सिंटैक्स कुछ इस तरह है:

 java [ <option> ... ] <class-name> [<argument> ...]

यहां <option> एक कमांड लाइन विकल्प है, <class-name> एक पूर्ण योग्य Java क्लास नाम है, और <argument> एक कमांड लाइन आर्गुमेंट है जिसे आपके एप्लिकेशन को पास किया जाता है जब पूरा पैकेज कंपाइल होता है।

एक वैध कमांड का उदाहरण है:

java -Xmx100m com.acme.example.ListAppuals kevin arrows bart

उपरोक्त कमांड java कमांड को निम्नलिखित संचालन निष्पादित करेगा:

  • यह क्लास 'com.acme.example.ListAppuals' के संकलित संस्करण की खोज करेगा।
  • खोज के बाद, यह क्लास को लोड करेगा।
  • अगला, जब क्लास लोड हो जाता है, तो क्लास को एक वैध हस्ताक्षर, संशोधक, और रिटर्न प्रकार के साथ 'main' विधि के लिए खोजा जाएगा। एक नमूना मुख्य क्लास कुछ इस तरह होगी:
public static void main(String[])
  • विधि को 'kevin', 'arrows', और 'bart' आर्गुमेंट्स के साथ string[] के रूप में बुलाया जाएगा।

'Could not find or load main class' कैसे ठीक करें

समाधान 1: क्लास नाम आर्गुमेंट की जांच करना

उपयोगकर्ताओं द्वारा की जाने वाली सबसे आम गलती यह है कि वे एक गलत क्लास नाम को आर्गुमेंट के रूप में प्रदान करते हैं (या एक सही क्लास नाम गलत रूप में)। चूंकि हम कमांड लाइन पर पैरामीटर घोषित कर रहे हैं, यह बहुत संभावना है कि आप क्लास नाम आर्गुमेंट को गलत रूप में पास करेंगे। यहां हम उन सभी संभावित परिदृश्यों को सूचीबद्ध करेंगे जहां आप गलती कर सकते हैं।

  • एक साधारण क्लास नाम लिखना। यदि आप क्लास को 'com.acme.example' जैसे पैकेज में घोषित करते हैं, तो आपको Java कमांड में पैकेज सहित पूर्ण क्लासनाम का उपयोग करना होगा।
java com.acme.example.ListAppuals

इसके बजाय

java ListAppuals
  • आपको फाइलनाम या पथनाम घोषित करने के बजाय क्लासनाम घोषित करना चाहिए। Java क्लास को नहीं लाता यदि आप इसके लिए पथनाम/फाइलनाम घोषित करते हैं। गलत प्रविष्टियों में निम्न शामिल हैं:
java ListAppuals.class java com/acme/example/ListAppuals.class
  • कैसिंग को ध्यान में रखा जाना चाहिए। Java कमांड केस सेंसिटिव हैं और यदि आप एक अक्षर की भी गलती करते हैं, तो आप मुख्य क्लास को लोड नहीं कर पाएंगे। गलत गलतियों का एक उदाहरण है:
java com.acme.example.listappuals
  • आपको सोर्स फाइलनाम घोषित नहीं करना चाहिए। जैसा कि पहले उल्लेख किया गया है, आपको केवल सही पूर्ण क्लासनाम प्रारूप में क्लास घोषित करने की आवश्यकता है। गलती का एक उदाहरण है:
java ListAppuals.java
  • यदि आप टाइपिंग गलती करते हैं या क्लास नाम पूरी तरह से लिखना भूल जाते हैं तो यह त्रुटि भी होगी।

यदि आपने क्लासनाम घोषित करने में कोई लापरवाही की गलती की है, तो इसे ठीक करना सुनिश्चित करें और फिर प्रोग्राम लॉन्च करने का प्रयास करें।

समाधान 2: क्लासपाथ की जांच करना

यदि आपने क्लासनाम सही ढंग से घोषित किया है लेकिन फिर भी त्रुटि दिखाई जाती है, तो संभावना है कि java कमांड निर्दिष्ट क्लासनाम को पथ पर नहीं ढूंढ सका। क्लासपाथ एक पथ है जहां Java रनटाइम संसाधन और क्लास फाइलों की खोज करता है। आप नीचे दिखाए गए दो अलग-अलग कमांड का उपयोग करके क्लासपाथ को आसानी से सेट कर सकते हैं:

C:> sdkTool -classpath classpath1;classpath2... C:> set CLASSPATH=classpath1;classpath2...

क्लासपाथ के बारे में अधिक जानकारी प्राप्त करने के लिए, आपको निम्नलिखित दस्तावेजों की जांच करनी चाहिए।

Java कमांड दस्तावेज़ीकरण

क्लासपाथ सेट करना

समाधान 3: डायरेक्टरी की जांच करना

जब आप एक डायरेक्टरी को क्लासपाथ के रूप में घोषित करते हैं, तो यह हमेशा नेमस्पेस की जड़ से मेल खाएगा। उदाहरण के लिए यदि "/usr/local/acme/classes" क्लासपाथ पर है, तो Java "com.acme.example.Appuals" क्लास की खोज करेगा। यह निम्न पथनाम वाली क्लास की तलाश करेगा:

/usr/local/acme/classes/com/acme/example/Appuals.class

इसलिए सार रूप में, यदि आप क्लासपाथ में निम्नलिखित पता डालते हैं, तो Java क्लास नहीं ढूंढ पाएगा:

/usr/local/acme/classes/com/acme/example

आपको अपने सबडायरेक्टरी की भी जांच करनी चाहिए और देखना चाहिए कि क्या यह FQN से मेल खाता है। यदि आपकी क्लास का FQN "com.acme.example.Appuals" है, तो Java "com/acme/example" डायरेक्टरी में "Appuals.class" की खोज करेगा।

आपको एक उदाहरण देने के लिए, मान लें कि निम्न परिदृश्य:

  • आप जिस क्लास को चलाना चाहते हैं वह है: com.acme.example.Appuals
  • पूर्ण फाइल पथ है: /usr/local/acme/classes/com/acme/example/Appuals.class
  • वर्तमान वर्किंग डायरेक्टरी है: /usr/local/acme/classes/com/acme/example/

तब निम्न परिदृश्य लागू होंगे:

# गलत, FQN की आवश्यकता है java Appuals # गलत, वर्तमान वर्किंग डायरेक्टरी में `com/acme/example` फोल्डर नहीं है java com.acme.example.Appuals # गलत, उपरोक्त परिदृश्य के समान java -classpath . com.acme.example.Appuals # ठीक; एक सापेक्ष क्लासपाथ सेट है java -classpath ../../.. com.acme.example.Appuals # ठीक; एक पूर्ण क्लासपाथ सेट है java -classpath /usr/local/acme/classes com.acme.example.Appuals

नोट: क्लासपाथ में उन सभी अन्य क्लास (गैर-सिस्टम) को भी शामिल करने की आवश्यकता है जिनकी आपके एप्लिकेशन को आवश्यकता है।

समाधान 4: क्लास पैकेज की जांच करना

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

  1. Windows 10 पर FiveM  Citizen DLL  लोडिंग एरर ठीक करें Windows 10 पर FiveM 'Citizen DLL' लोडिंग एरर ठीक करें

    FiveM GTA की एक अनिवार्य विशेषता है। इसके बिना, GTA संशोधन करना संभव नहीं होगा। यह Grand Theft Auto के लिए एक मल्टीप्लेयर मॉड है जो गेमर्स के लिए अनुकूलित सामग्री की एक श्रृंखला की अनुमति देता है और निजी सर्वर से सुरक्षित कनेक्शन भी सक्षम करता है। हालांकि, यह कभी-कभी उन मुद्दों में चला जाता है जो Fi

  1. विंडोज 10 पर  DS4 विंडोज खोल नहीं सका  त्रुटि को हल करें विंडोज 10 पर 'DS4 विंडोज खोल नहीं सका' त्रुटि को हल करें

    DS4 विंडोज एक मुफ्त पोर्टेबल प्रोग्राम और वर्चुअल एमुलेटर है जो प्लेस्टेशन कंट्रोलर (डुअल शॉक 3, डुअल शॉक 4 और डुअल सेंस) को पीसी से उपयोग करने और कनेक्ट करने में मदद करता है। DS4 विंडोज उपयोगकर्ताओं को अधिक पीसी गेम प्रदान करता है जिन्हें प्लेस्टेशन कंट्रोलर का उपयोग करके खेला जा सकता है। इतना ही

  1. विंडोज 10 पर  सिस्टम कुड नॉट फाइंड द एनवायरनमेंट ऑप्शन  एरर को हल करें विंडोज 10 पर 'सिस्टम कुड नॉट फाइंड द एनवायरनमेंट ऑप्शन' एरर को हल करें

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