TL; DR
สำหรับผู้อ่านที่มีประสบการณ์:
- ค้นหาเส้นทาง Java; ดูเหมือนว่านี้:
C:\Program Files\Java\jdkxxxx\bin\
- ค้นหาเมนูเริ่มต้นสำหรับ "ตัวแปรสภาพแวดล้อม" เพื่อเปิดกล่องโต้ตอบตัวเลือก
PATH
ตรวจสอบ ลบเส้นทาง Java เก่า
PATH
เพิ่มเส้นทางใหม่เพื่อ Java
JAVA_HOME
แก้ไข
- ปิดและเปิดคอนโซล / IDE อีกครั้ง
ยินดีต้อนรับ!
คุณพบหนึ่งในปัญหาทางเทคนิคที่ฉาวโฉ่ที่สุดที่ผู้เริ่มต้นใช้งาน Java: 'xyz' is not recognized as an internal or external command...
ข้อความแสดงข้อผิดพลาด
สั้น, คุณไม่ได้ติดตั้ง Java ได้อย่างถูกต้อง ขั้นตอนสุดท้ายในการติดตั้ง Java บน Windows ต้องใช้ขั้นตอนแบบแมนนวล คุณต้องทำตามขั้นตอนเหล่านี้เสมอหลังจากติดตั้ง Java รวมถึงหลังจากอัพเกรด JDK
ตัวแปรสภาพแวดล้อมและ PATH
(หากคุณเข้าใจสิ่งนี้อยู่แล้วอย่าลังเลที่จะข้ามสามส่วนถัดไป)
เมื่อคุณเรียกใช้javac HelloWorld.java
cmd ต้องกำหนดตำแหน่งที่javac.exe
อยู่ สิ่งนี้สามารถทำได้ด้วยPATH
ตัวแปรสภาพแวดล้อม
ตัวแปรสภาพแวดล้อมเป็นคู่พิเศษค่าคีย์ (เช่นwindir=C:\WINDOWS
) ส่วนใหญ่มาพร้อมกับระบบปฏิบัติการและบางอย่างจำเป็นสำหรับการทำงานของระบบที่เหมาะสม รายการของพวกเขาจะถูกส่งผ่านไปยังทุกโปรแกรม (รวมถึง cmd) เมื่อมันเริ่ม บน Windowsมีสองประเภท : ตัวแปรสภาพแวดล้อมของผู้ใช้และตัวแปรสภาพแวดล้อมของระบบ
คุณสามารถเห็นตัวแปรสภาพแวดล้อมของคุณเช่นนี้:
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
ไม่ได้เป็นคำสั่งภายใน , การค้นหาระบบPATH
PATH
ตามด้วยผู้ใช้ มันจะเข้าสู่กลไกไดเรกทอรีในรายการทุกคนและการตรวจสอบถ้าjavac.com
, javac.exe
, javac.bat
และอื่น ๆที่เป็นปัจจุบัน เมื่อพบว่าjavac
มันทำงาน เมื่อไม่ได้ทำการพิมพ์'javac' is not recognized as an internal or external command, operable program or batch file.
คุณต้องเพิ่มไดเรกทอรี Java executables PATH
ไป
JDK เทียบกับ JRE
(หากคุณเข้าใจสิ่งนี้อยู่แล้วอย่าลังเลที่จะข้ามหัวข้อนี้)
เมื่อดาวน์โหลด Java คุณจะได้รับตัวเลือกระหว่าง:
- Java Runtime Environment (JRE) ซึ่งรวมถึงเครื่องมือที่จำเป็นเพื่อเรียกใช้โปรแกรม Java แต่ไม่ได้ที่จะรวบรวมใหม่ - มันมีแต่ไม่
java
javac
- ชุดพัฒนา Java (JDK) ซึ่งมีทั้ง
java
และjavac
พร้อมกับโฮสต์ของเครื่องมือในการพัฒนาอื่น ๆ JDK เป็นชุดของ JRE
คุณต้องทำให้แน่ใจว่าคุณได้ติดตั้ง JDKแล้ว หากคุณติดตั้ง JRE ไว้แล้วเท่านั้นคุณจะไม่สามารถดำเนินการได้javac
เนื่องจากคุณไม่ได้ติดตั้ง Java compiler ในฮาร์ดไดรฟ์ ตรวจสอบรายการโปรแกรม Windows ของคุณและตรวจสอบให้แน่ใจว่าชื่อแพคเกจ Java มีคำว่า "ชุดพัฒนา" อยู่ในนั้น
อย่าใช้ set
(หากคุณยังไม่ได้วางแผนที่จะข้ามส่วนนี้ไป)
คำตอบอื่น ๆ อีกหลายข้อแนะนำให้ดำเนินการรูปแบบของ:
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
อย่าทำอย่างนั้น. มีปัญหาที่สำคัญหลายประการกับคำสั่งนั้น:
- คำสั่งนี้จะลบทุกอย่างจาก
PATH
และแทนที่ด้วยเส้นทาง Java หลังจากดำเนินการคำสั่งนี้คุณอาจพบว่าคำสั่งอื่น ๆ ไม่ทำงาน
- เส้นทาง Java ของคุณอาจไม่ใช่
C:\Program Files\Java\jdk1.7.0_09\bin
- คุณเกือบจะมี JDK เวอร์ชันใหม่กว่าซึ่งจะมีเส้นทางอื่น
- ใหม่
PATH
ใช้เฉพาะกับเซสชัน cmd ปัจจุบัน คุณจะต้องป้อนset
คำสั่งอีกครั้งทุกครั้งที่คุณเปิด Command Prompt
คะแนน # 1 และ # 2 สามารถแก้ไขได้ด้วยเวอร์ชั่นที่ดีกว่านี้เล็กน้อย:
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
แต่มันเป็นความคิดที่ไม่ดีโดยทั่วไป
ค้นหาเส้นทาง Java
วิธีที่ถูกต้องเริ่มต้นด้วยการค้นหาตำแหน่งที่คุณติดตั้ง Java ขึ้นอยู่กับว่าคุณติดตั้ง Java อย่างไร
ตัวติดตั้ง exe
คุณติดตั้ง Java ด้วยการรันโปรแกรมติดตั้ง โปรแกรมติดตั้งของออราเคิลวางเวอร์ชั่นของ Java ไว้ในC:\Program Files\Java\
(หรือC:\Program Files (x86)\Java\
) ด้วย File Explorer หรือ Command Prompt ไปที่ไดเรกทอรีนั้น
แต่ละโฟลเดอร์ย่อยแสดงถึงเวอร์ชันของ Java หากมีเพียงหนึ่งคุณได้พบมัน มิฉะนั้นให้เลือกอันที่ดูเหมือนเวอร์ชั่นที่ใหม่กว่า ตรวจสอบให้แน่ใจว่าชื่อโฟลเดอร์เริ่มต้นด้วยjdk
(ตรงข้ามกับjre
) ป้อนไดเรกทอรี
จากนั้นป้อนbin
ไดเรกทอรีของที่
ตอนนี้คุณอยู่ในไดเรกทอรีที่ถูกต้อง คัดลอกพา ธ หากใน File Explorer คลิกแถบที่อยู่ หากอยู่ในพรอมต์คำสั่งให้คัดลอกพรอมต์
เส้นทาง Java ที่ได้ควรอยู่ในรูปของ (โดยไม่มีเครื่องหมายอัญประกาศ):
C:\Program Files\Java\jdkxxxx\bin\
ไฟล์ซิป
คุณได้ดาวน์โหลด. zip ที่มี JDK แตกไปยังสถานที่สุ่มซึ่งมันจะไม่เข้าไปในทางของคุณ C:\Java\
เป็นทางเลือกที่ยอมรับได้
จากนั้นค้นหาbin
โฟลเดอร์ที่อยู่ภายใน
ตอนนี้คุณอยู่ในไดเรกทอรีที่ถูกต้อง คัดลอกเส้นทางของมัน นี่คือเส้นทาง Java
อย่าลืมย้ายโฟลเดอร์เพราะจะทำให้เส้นทางไม่ถูกต้อง
เปิดกล่องโต้ตอบการตั้งค่า
PATH
นั่นคือโต้ตอบที่จะแก้ไข มีหลายวิธีในการเข้าถึงกล่องโต้ตอบนั้นขึ้นอยู่กับรุ่น Windows ของคุณการตั้งค่า UI และความสับสนของการกำหนดค่าระบบของคุณ
ลองสิ่งเหล่านี้:
- เริ่มเมนู / แถบค้นหาของกล่องค้นหา»ค้นหา "ตัวแปรสภาพแวดล้อม"
- ชนะ + R »
control sysdm.cpl,,3
- Win + R »
SystemPropertiesAdvanced.exe
»ตัวแปรสภาพแวดล้อม
- File Explorer »พิมพ์ลงในแถบที่อยู่
Control Panel\System and Security\System
»การตั้งค่าระบบขั้นสูง (ซ้ายสุดในแถบด้านข้าง) »ตัวแปรสภาพแวดล้อม
- เดสก์ท็อป»คลิกขวาที่พีซีนี้»คุณสมบัติ»การตั้งค่าระบบขั้นสูง»ตัวแปรสภาพแวดล้อม
- เมนูเริ่ม»คลิกขวาที่คอมพิวเตอร์»คุณสมบัติ»การตั้งค่าระบบขั้นสูง»ตัวแปรสภาพแวดล้อม
- แผงควบคุม (โหมดไอคอน) »ระบบ»การตั้งค่าระบบขั้นสูง»ตัวแปรสภาพแวดล้อม
- แผงควบคุม (โหมดหมวดหมู่) »ระบบและความปลอดภัย»ระบบ»การตั้งค่าระบบขั้นสูง»ตัวแปรสภาพแวดล้อม
- เดสก์ท็อป»คลิกขวาที่คอมพิวเตอร์ของฉัน»ขั้นสูง»ตัวแปรสภาพแวดล้อม
- แผงควบคุม»ระบบ»ขั้นสูง»ตัวแปรสภาพแวดล้อม
สิ่งเหล่านี้ควรนำคุณไปสู่กล่องโต้ตอบการตั้งค่าที่ถูกต้อง
หากคุณอยู่ใน Windows 10, ไมโครซอฟท์มีความสุขคุณด้วยแฟนซี UI แบบใหม่PATH
ที่จะแก้ไข มิฉะนั้นคุณจะเห็นPATH
ความรุ่งโรจน์ที่เต็มไปด้วยเซมิโคลอนบีบลงในกล่องข้อความบรรทัดเดียว พยายามอย่างเต็มที่เพื่อแก้ไขที่จำเป็นโดยไม่ทำให้ระบบของคุณเสียหาย
สะอาด PATH
ดูที่ PATH
ดูที่คุณมีPATH
ตัวแปรสองตัวเกือบแน่นอน(เพราะผู้ใช้กับตัวแปรสภาพแวดล้อมของระบบ) คุณต้องดูทั้งคู่
ตรวจสอบเส้นทาง Java อื่น ๆและลบออก การดำรงอยู่ของพวกเขาสามารถทำให้เกิดความขัดแย้งได้ทุกประเภท (ตัวอย่างเช่นหากคุณมี JRE 8 และ JDK 11 อยู่PATH
ในลำดับนั้นjavac
จะเรียกใช้คอมไพเลอร์ Java 11 ซึ่งจะสร้าง.class
ไฟล์เวอร์ชัน 55 แต่java
จะเรียกใช้ Java 8 JVM ซึ่งรองรับเฉพาะรุ่นที่ 52 เท่านั้นและ คุณจะพบข้อผิดพลาดเกี่ยวกับรุ่นที่ไม่สนับสนุนและไม่สามารถรวบรวมและเรียกใช้โปรแกรมใด ๆ ได้) หลีกเลี่ยงปัญหาเหล่านี้ด้วยการทำให้แน่ใจว่าคุณมีเส้นทาง Java หนึ่งเส้นทางPATH
เท่านั้น และในขณะที่คุณอยู่ที่นี่คุณอาจถอนการติดตั้ง Java เวอร์ชันเก่าได้เช่นกันเช่นกัน และจำไว้ว่าคุณไม่จำเป็นต้องมีทั้ง JDK และ JRE
หากคุณมีC:\ProgramData\Oracle\Java\javapath
, เอาว่าเป็นอย่างดี ออราเคิลตั้งใจที่จะแก้ปัญหาเส้นทาง Java แตกหลังจากการอัพเกรดโดยการสร้างลิงค์สัญลักษณ์ที่มักจะชี้ไปที่การติดตั้ง Java ล่าสุด แต่น่าเสียดายที่มันมักจะลงท้ายชี้ไปยังตำแหน่งที่ไม่ถูกต้องหรือไม่เพียงแค่การทำงาน เป็นการดีกว่าที่จะลบรายการนี้และจัดการเส้นทาง Java ด้วยตนเอง
PATH
ตอนนี้ยังเป็นโอกาสที่ดีในการดำเนินการดูแลทำความสะอาดทั่วไป หากคุณมีเส้นทางที่เกี่ยวข้องกับซอฟต์แวร์ที่ไม่ได้ติดตั้งบนพีซีของคุณอีกต่อไปคุณสามารถลบออกได้ นอกจากนี้คุณยังสามารถสลับลำดับของเส้นทางรอบ ๆ ได้ (หากคุณสนใจสิ่งนั้น)
เพิ่ม PATH
ตอนนี้ใช้เส้นทาง Java PATH
คุณพบสามขั้นตอนที่ผ่านมาและวางไว้ในระบบ
มันไม่สำคัญว่าในเส้นทางของคุณจะอยู่ที่ไหนในรายการ วางไว้ที่ท้ายเป็นตัวเลือกที่ดี
หากคุณใช้ pre-Windows 10 UI ตรวจสอบให้แน่ใจว่าคุณใส่เครื่องหมายอัฒภาคอย่างถูกต้อง ควรมีหนึ่งรายการที่แยกทุกเส้นทางในรายการ
ไม่มีอะไรจะพูดที่นี่อีกแล้ว เพียงเพิ่มเส้นทางPATH
และคลิกตกลง
ชุด JAVA_HOME
ในขณะที่คุณอยู่ที่นี่คุณอาจจะตั้งค่าJAVA_HOME
เช่นกัน นี่เป็นตัวแปรสภาพแวดล้อมอื่นที่ควรมีเส้นทาง Java โปรแกรม Java และไม่ใช่ Java จำนวนมากรวมถึงระบบสร้าง Java ยอดนิยมMavenและGradleจะโยนข้อผิดพลาดหากตั้งค่าไม่ถูกต้อง
หากJAVA_HOME
ไม่มีอยู่สร้างมันเป็นตัวแปรสภาพแวดล้อมระบบใหม่ ตั้งค่าเป็นพา ธ ของไดเรกทอรี Java ที่ไม่มีbin/
ไดเรกทอรีเช่นC:\Program Files\Java\jdkxxxx\
ไดเรกทอรีคือ
อย่าลืมแก้ไขJAVA_HOME
หลังจากอัพเกรด Java ด้วย
ปิดและเปิดพร้อมรับคำสั่งอีกครั้ง
แม้ว่าคุณจะมีการปรับเปลี่ยนทุกโปรแกรมที่ทำงานรวมทั้งคำสั่งดูเก่าPATH
PATH
นี่เป็นเพราะรายการของตัวแปรสภาพแวดล้อมทั้งหมดจะถูกคัดลอกลงในโปรแกรมเมื่อเริ่มดำเนินการเท่านั้น หลังจากนั้นจะให้เฉพาะการคัดลอกแคชเท่านั้น
ไม่มีวิธีที่ดีในการรีเฟรชตัวแปรสภาพแวดล้อมของ cmdดังนั้นเพียงแค่ปิดพรอมต์คำสั่งแล้วเปิดอีกครั้ง หากคุณใช้ IDE ให้ปิดและเปิดใหม่อีกครั้ง
ดูสิ่งนี้ด้วย