javac को आंतरिक या बाहरी कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है [बंद]


253

मैं जावा प्रोग्राम को संकलित करने की कोशिश करते समय एक त्रुटि का सामना कर रहा हूं।

मैं विंडोज पर हूं (यह एक विंडोज-विशिष्ट समस्या है) और मेरे पास नवीनतम जेडीके स्थापित है।

मैंने PATHचर से जुड़े एक समाधान का प्रयास किया है , लेकिन त्रुटि बनी रहती है।

कंसोल आउटपुट:

C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.

7
मुझे लगता है कि आपका रास्ता तय नहीं है। अपने पर्यावरणविज्ञानी के पास जाओ और उनका रास्ता तय करो
रॉन

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

8
जानकारी के लिए टा जेसन सी। लेकिन मुझे लगता है कि मुझे लगता है कि इस थ्रेड-टॉपिक को कॉल करने का निर्णय मुझे लगता है कि इस उत्तर को अपटेड करने वाले अन्य लोगों की संख्या के साथ अंतर है। जैसा कि मैं करने वाला हूं।
मैट स्टीवंस


एक नया चर जोड़ना आसान है और एक बार जब आप एक नया चर "पैथ" बनाते हैं तो सुनिश्चित करें कि आप अर्धविराम (;) और मूल्य के अंत को जोड़ते हैं।
आमिर एमडी अमीरुज्जमाँ

जवाबों:


434

टी एल; डॉ

अनुभवी पाठकों के लिए:

  1. जावा पथ खोजें; यह इस तरह दिख रहा है:C:\Program Files\Java\jdkxxxx\bin\
  2. विकल्प संवाद खोलने के लिए "पर्यावरण चर" के लिए स्टार्ट-मेनू खोज।
  3. परीक्षा PATH। पुराने जावा पथ निकालें।
  4. नया जावा पथ जोड़ें PATH
  5. संपादित करें JAVA_HOME
  6. कंसोल और आईडीई बंद करें और फिर से खोलें।

स्वागत हे!

आपने जावा शुरुआती: 'xyz' is not recognized as an internal or external command...त्रुटि संदेश का सामना करने वाले सबसे कुख्यात तकनीकी मुद्दों में से एक का सामना किया है ।

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

पर्यावरण चर और PATH

(यदि आप पहले से ही इसे समझते हैं, तो बेझिझक अगले तीन सेक्शन छोड़ें।)

जब आप चलाते हैं javac HelloWorld.java, तो cmd को यह निर्धारित करना चाहिए कि कहां javac.exeस्थित है। यह PATHएक पर्यावरण चर के साथ पूरा किया गया है ।

एक पर्यावरण चर एक विशेष कुंजी-मूल्य जोड़ी (जैसे windir=C:\WINDOWS) है। अधिकांश ऑपरेटिंग सिस्टम के साथ आए, और कुछ उचित सिस्टम कामकाज के लिए आवश्यक हैं। जब यह शुरू होता है तो उनकी एक सूची हर कार्यक्रम (cmd सहित) को दी जाती है। विंडोज पर , दो प्रकार हैं : उपयोगकर्ता पर्यावरण चर और सिस्टम पर्यावरण चर

आप अपने पर्यावरण चर इस तरह देख सकते हैं:

C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...

सबसे महत्वपूर्ण चर है PATH। यह उन रास्तों की सूची है, जिनके द्वारा अलग किया गया है; । जब एक कमांड को cmd में दर्ज किया जाता है, तो सूची में प्रत्येक निर्देशिका को मिलान योग्य निष्पादन के लिए स्कैन किया जाएगा।

मेरे कंप्यूटर पर PATHहै:

C:\>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps

जब आप चलाते हैं javac HelloWorld.java, तो cmd, यह महसूस करने पर कि आंतरिक कमांडjavac नहीं है, उपयोगकर्ता द्वारा पीछा की गई प्रणाली को खोजता है । यह यंत्रवत् सूची में हर निर्देशिका में प्रवेश करती है, और इसकी जांच करता है , , , आदि मौजूद है। जब मिलता है , तो इसे चलाता है। जब यह नहीं होता है, यह प्रिंट करता हैPATHPATHjavac.comjavac.exejavac.batjavac'javac' is not recognized as an internal or external command, operable program or batch file.

आपको Java निष्पादक निर्देशिका को जोड़ना होगा PATH

JDK बनाम JRE

(यदि आप पहले से ही इसे समझते हैं, तो इस अनुभाग को छोड़ने के लिए स्वतंत्र महसूस करें।)

जावा डाउनलोड करते समय, आपको इसके बीच एक विकल्प की पेशकश की जाती है:

  • जावा रनटाइम एनवायरनमेंट (JRE) है, जो आवश्यक उपकरण शामिल हैं जावा प्रोग्राम को चलाने के लिए, लेकिन नहीं नए लोगों को संकलित करने के लिए - यह होता है javaलेकिन नहींjavac
  • जावा डेवलपमेंट किट (JDK), जो दोनों शामिल हैं javaऔर javacअन्य विकास उपकरण के एक मेजबान के साथ। JDK JRE का सुपरसेट है।

आपको यह सुनिश्चित करना होगा कि आपने JDK स्थापित किया है । यदि आपने केवल JRE स्थापित किया है, तो आप निष्पादित नहीं कर सकतेjavac क्योंकि आपके हार्ड ड्राइव पर जावा कंपाइलर की स्थापना नहीं है। अपनी विंडोज प्रोग्राम सूची की जाँच करें, और सुनिश्चित करें कि जावा पैकेज के नाम में "विकास किट" शब्द शामिल हैं।

उपयोग न करें set

(यदि आप किसी भी तरह की योजना नहीं बना रहे थे, तो इस अनुभाग को छोड़ने के लिए स्वतंत्र महसूस करें।)

कई अन्य उत्तर कुछ भिन्नताओं को निष्पादित करने की सलाह देते हैं:

C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

ऐसा मत करो। उस आदेश के साथ कई प्रमुख समस्याएं हैं:

  1. यह कमांड बाकी सब चीज़ों को मिटा देता है औरPATH इसे जावा पथ के साथ बदल देता है। इस कमांड को निष्पादित करने के बाद, आपको विभिन्न अन्य कमांड काम नहीं कर सकते हैं।
  2. आपका जावा पथ शायद नहीं है C:\Program Files\Java\jdk1.7.0_09\bin - आपके पास निश्चित रूप से जेडीके का एक नया संस्करण है, जिसमें एक अलग रास्ता होगा।
  3. नया PATH केवल वर्तमान cmd सत्र पर लागू होता है। setकमांड प्रॉम्प्ट खोलने पर आपको हर बार कमांड को फिर से दर्ज करना होगा ।

अंक # 1 और # 2 को इस बेहतर संस्करण के साथ हल किया जा सकता है:

C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%

लेकिन यह सामान्य रूप से सिर्फ एक बुरा विचार है।

जावा पथ खोजें

सही तरीका यह खोजने से शुरू होता है कि आपने जावा कहां स्थापित किया है। यह कैसे पर निर्भर करता है आपने जावा को स्थापित किया है।

Exe इंस्टॉलर

आपने सेटअप प्रोग्राम चलाकर जावा स्थापित किया है। ओरेकल का इंस्टॉलर जावा C:\Program Files\Java\(या C:\Program Files (x86)\Java\) के तहत जावा के संस्करण रखता है । फ़ाइल एक्सप्लोरर या कमांड प्रॉम्प्ट के साथ, उस निर्देशिका में नेविगेट करें।

प्रत्येक सबफ़ोल्डर जावा के एक संस्करण का प्रतिनिधित्व करता है। अगर एक ही है, तो तुमने पा लिया है। अन्यथा, वह चुनें जो नए संस्करण की तरह दिखता है। सुनिश्चित करें कि फ़ोल्डर का नाम jdk(विरोध के अनुसार jre) से शुरू होता है । निर्देशिका दर्ज करें।

फिर दर्ज करें bin निर्देशिका ।

अब आप सही निर्देशिका में हैं। रास्ते की नकल करो। यदि फ़ाइल एक्सप्लोरर में, पता बार पर क्लिक करें। यदि कमांड प्रॉम्प्ट में, कॉपी करें करें।

परिणामी जावा पथ (उद्धरण के बिना) के रूप में होना चाहिए:

C:\Program Files\Java\jdkxxxx\bin\

ज़िप फ़ाइल

आपने JDK युक्त एक .zip डाउनलोड किया है। इसे कुछ यादृच्छिक स्थान पर निकालें जहां यह आपके रास्ते में नहीं आएगा; C:\Java\एक स्वीकार्य विकल्प है।

फिर उसके binभीतर कहीं फ़ोल्डर खोजें ।

अब आप सही निर्देशिका में हैं। इसकी राह की नकल करो। यह जावा पथ है।

याद रखें कि फ़ोल्डर को कभी भी स्थानांतरित न करें, क्योंकि यह पथ को अमान्य कर देगा।

सेटिंग्स संवाद खोलें

वह संवाद संपादित करने के लिए है PATH। उस संवाद को पाने के कई तरीके हैं, जो आपके विंडोज संस्करण, यूआई सेटिंग्स और आपके सिस्टम कॉन्फ़िगरेशन को कैसे गड़बड़ करता है, इस पर निर्भर करता है।

इनमें से कुछ आज़माएँ:

  • प्रारंभ मेनू / टास्कबार खोज बॉक्स »" पर्यावरण चर "के लिए खोज
  • विन + आर » control sysdm.cpl,,3
  • विन + आर » SystemPropertiesAdvanced.exe» पर्यावरण चर
  • फाइल एक्सप्लोरर »एड्रेस बार में टाइप करें Control Panel\System and Security\System » उन्नत सिस्टम सेटिंग्स (साइडबार में बाईं ओर) »पर्यावरण चर
  • डेस्कटॉप »इस पीसी पर राइट-क्लिक करें» गुण »उन्नत सिस्टम सेटिंग्स» पर्यावरण चर
  • प्रारंभ मेनू »कंप्यूटर पर राइट-क्लिक करें» गुण »उन्नत सिस्टम सेटिंग्स» पर्यावरण चर
  • नियंत्रण कक्ष (आइकन मोड) »प्रणाली» उन्नत प्रणाली सेटिंग्स »पर्यावरण चर
  • नियंत्रण कक्ष (श्रेणी मोड) »प्रणाली और सुरक्षा» प्रणाली »उन्नत प्रणाली सेटिंग्स» पर्यावरण चर
  • डेस्कटॉप »राइट-क्लिक करें मेरा कंप्यूटर» उन्नत »पर्यावरण चर
  • नियंत्रण कक्ष »प्रणाली» उन्नत »पर्यावरण चर

इनमें से कोई भी आपको सही सेटिंग्स डायलॉग पर ले जाना चाहिए।

यदि आप विंडोज 10 पर हैं, तो Microsoft ने आपको संपादित करने के लिए एक नए UI के साथ आशीर्वाद दिया है PATH। अन्यथा, आप PATHइसके पूर्ण अर्धविराम-अतिक्रमित महिमा को देखेंगे , जिसे एकल-पंक्ति वाले टेक्स्टबॉक्स में निचोड़ा जाएगा। अपने सिस्टम को तोड़े बिना आवश्यक संपादन करने की पूरी कोशिश करें।

स्वच्छ PATH

को देखो PATH। आपके पास निश्चित रूप से दो PATHचर हैं (उपयोगकर्ता बनाम सिस्टम पर्यावरण चर के कारण)। आपको दोनों को देखने की जरूरत है।

अन्य जावा पथों के लिए जाँच करें और उन्हें हटा दें। उनका अस्तित्व सभी प्रकार के संघर्षों का कारण बन सकता है। (उदाहरण के लिए, यदि आपके पास PATHउस क्रम में JRE 8 और JDK 11 हैं , तो javacJava 11 संकलक को आमंत्रित करेगा, जो संस्करण 55 .classफ़ाइलों का निर्माण करेगा , लेकिन javaJava 8 JVM का आह्वान करेगा, जो केवल संस्करण 52 तक का समर्थन करता है, और) आप असमर्थित संस्करण त्रुटियों का अनुभव करेंगे और किसी भी प्रोग्राम को संकलित करने और चलाने में सक्षम नहीं होंगे।) इन समस्याओं को सुनिश्चित करें कि आपके पास केवल एक जावा पथ है PATH। और जब आप इस पर हों, तो आप पुराने जावा संस्करणों को भी अनइंस्टॉल कर सकते हैं। और याद रखें कि आपको JDK और JRE दोनों की आवश्यकता नहीं है

यदि आपके पास है C:\ProgramData\Oracle\Java\javapath, तो उसे भी हटा दें । ओरेकल ने एक प्रतीकात्मक लिंक बनाकर उन्नयन के बाद जावा पथों की समस्या को हल करने का इरादा किया जो हमेशा नवीनतम जावा इंस्टॉलेशन की ओर इशारा करता है। दुर्भाग्य से, यह अक्सर गलत स्थान की ओर इशारा करता है या बस काम नहीं करता है । इस प्रविष्टि को हटाने और जावा पथ को मैन्युअल रूप से प्रबंधित करने के लिए बेहतर है।

अब सामान्य हाउसकीपिंग करने का एक अच्छा अवसर है PATH। यदि आपके पास सॉफ़्टवेयर से संबंधित पथ हैं जो अब आपके पीसी पर स्थापित नहीं हैं, तो आप उन्हें हटा सकते हैं। आप आसपास के रास्तों के क्रम में फेरबदल भी कर सकते हैं (यदि आप इस तरह की चीजों की परवाह करते हैं)।

में जोड़े PATH

अब आपको तीन कदम पहले मिला जावा पथ लें, और इसे सिस्टम में रखें PATH

इससे कोई फर्क नहीं पड़ता कि सूची में आपका नया रास्ता कहाँ जाता है; इसे अंत में रखना एक अच्छा विकल्प है।

यदि आप प्री-विंडोज 10 यूआई का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपने अर्धविराम को सही तरीके से रखा है। सूची में हर पथ को अलग करने वाला एक होना चाहिए।

यहाँ कहने के लिए वास्तव में बहुत कुछ नहीं है। बस करने के लिए पथ जोड़ें PATHऔर ठीक क्लिक करें।

सेट JAVA_HOME

जब आप इस पर होते हैं, तो आप साथ ही साथ सेट कर सकते हैं JAVA_HOME। यह एक और पर्यावरण चर है जिसमें जावा पथ भी होना चाहिए। कई जावा और गैर-जावा प्रोग्राम, लोकप्रिय जावा बिल्ड सिस्टम मावेन और ग्रैडल सहित, त्रुटियों को ठीक से सेट नहीं होने पर फेंक देंगे।

यदि JAVA_HOMEमौजूद नहीं है, तो इसे एक नए सिस्टम वातावरण चर के रूप में बनाएं। इसे निर्देशिका के बिना जावा निर्देशिका के पथ पर सेट करें bin/, अर्थात C:\Program Files\Java\jdkxxxx\

JAVA_HOMEजावा को अपग्रेड करने के बाद संपादित करना भी याद रखें ।

बंद करें और कमांड प्रॉम्प्ट को फिर से खोलें

यद्यपि आपने संशोधित किया है PATH, सभी चल रहे प्रोग्राम, जिनमें cmd ​​शामिल है, केवल पुराने को देखें PATH। ऐसा इसलिए है क्योंकि सभी पर्यावरण चर की सूची को केवल एक कार्यक्रम में कॉपी किया जाता है जब इसे निष्पादित करना शुरू होता है; इसके बाद, यह केवल कैश्ड कॉपी को सुरक्षित रखता है।

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

यह सभी देखें


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

4
धन्यवाद! यह मेरे लिए काम करता है! @ ई ​​एच: अंत में मेरे लिए काम करता है जोड़ना। जो मैं समझता हूं, वह पथ से बाएं से दाएं जाता है और javac.exe को देखता है। तो हो सकता है कि आपके पास यह कुछ डायरेक्टरी में हो कि सामने और वह javac.exe काम न करे।
डाओ लाम

36
+1 कमांड-लाइन को बंद करने के लिए फिर इसे खोलना, जो मेरे लिए काम करता है!
समान दिबियास

अगर मेरे कंप्यूटर पर jdk और jre का अलग-अलग संस्करण है तो क्या इसका कोई मतलब है?
एरोन लियू

मैंने इन चरों और उन सभी को सेट करते समय OS सिस्टम के बारे में बहुत कुछ सीखा। धन्यवाद आदमी
अनिकेत जाधव


45

आपने setआज्ञा को गलत मान लिया - आप बाद में पीछे छूट गए C:। यह होना चाहिए:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin

1
मुझे वह सही याद आया लेकिन मेरी चिंता यहाँ पोस्ट करते समय मेरी टाइपोग्राफिक त्रुटि थी। मैंने इसकी जाँच की और सब कुछ सही ढंग से लिखा गया है लेकिन फिर भी मुझे वही त्रुटि मिलती है।
user987137

1
@ user987137। जाहिर है, कुछ गलत है। क्या निर्दिष्ट स्थान पर JDK (माइंड यू - JDK not JRE) स्थापित किया गया है C:\Program Files (x86)\Java\jdk1.7.0? यदि हां, तो आप क्या करते हैं cd C:\Program Files (x86)\Java\jdk1.7.0\binऔर तब क्या होता है javac -version?
रघुराम

3
विन XP पर JDK सेट करते समय भी मेरी वही त्रुटि थी, जबकि मेरे पास सही रास्ता सेट था। बस कमांड प्रॉम्प्ट को बंद करना और इसे फिर से खोलना तय है।
क्रिस जे।

@ChrisJ - ऐसा इसलिए है क्योंकि नए कमांड प्रॉम्प्ट को एक नए सत्र में शुरू किया जाएगा और इसलिए अपडेट किए गए पर्यावरण चर को भी लोड किया जाएगा।
साइक्लोनोस्कोप

17

कमांड प्रॉम्प्ट से निम्नलिखित चलाएँ: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" या set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

मैंने यह कोशिश की है और यह अच्छी तरह से काम करता है।


thx, इसने विंडोज पर काम किया
Csaba

अच्छा उत्तर। विंडोज 10 पर मेरे लिए काम किया
रोजर

5

यदि जावा कमांड काम कर रही है और जेवैक के साथ समस्या हो रही है। फिर पहले jdk की बिन निर्देशिका javac.exe फ़ाइल में जाँच करें कि वहाँ है या नहीं। यदि javac.exe फ़ाइल मौजूद है, तो JAVA_HOMEसिस्टम चर के रूप में सेट करें ।


3

अपने पर्यावरण चर की जाँच करें।

मेरे मामले में मेरे पास JAVA_HOME सिस्टम चर के साथ-साथ मेरे उपयोगकर्ता खाता चर में सेट किया गया था और बाद वाला जावा के एक गलत संस्करण पर सेट किया गया था । मुझे पथ चर के साथ भी यही समस्या थी।

बाद मेरी उपयोगकर्ता खाता से JAVA_HOME को हटाने पथ चर से चर और गलत मार्ग को हटाने इसे सही ढंग से काम किया।

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