javac ไม่ทำงานในพรอมต์คำสั่งของ windows


132

ฉันพยายามใช้javacกับพรอมต์คำสั่งของ windows แต่ใช้ไม่ได้

หลังจากเพิ่มไดเร็กทอรี"C:\Program Files\Java\jdk1.6.0_16\bin\"ที่ส่วนท้ายของPATHตัวแปรสภาพแวดล้อมjavaคำสั่งจะทำงานได้ดี แต่การใช้javacทำให้ฉันมีข้อผิดพลาดต่อไปนี้:

ไม่รู้จัก 'javac' เป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์


คำตอบ:


162

หากคุณเพิ่มไว้ในแผงควบคุมในขณะที่พรอมต์คำสั่งของคุณเปิดอยู่สิ่งนั้นจะไม่ส่งผลต่อพรอมต์คำสั่งปัจจุบันของคุณ คุณจะต้องออกและเปิดใหม่หรือเพียงแค่ทำ:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

โดยวิธีการตรวจสอบให้ดำเนินการ:

echo %path%

จากพรอมต์คำสั่งของคุณและแจ้งให้เราทราบว่ามันคืออะไร

มิฉะนั้นให้แน่ใจว่ามีเป็น javac ในไดเรกทอรีโดยพยายาม:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

จากพรอมต์คำสั่ง คุณยังสามารถบอกได้ว่าไฟล์ปฏิบัติการใด (ถ้ามี) ถูกใช้ด้วยคำสั่ง:

for %i in (javac.exe) do @echo %~$PATH:i

นี่เป็นเคล็ดลับที่เรียบง่ายคล้ายกับwhichและ / หรือwhenceคำสั่งในระบบปฏิบัติการ UNIX บางระบบ


11
ใช่สิ่งที่ฉันต้องทำคือเปิดพรอมต์คำสั่งอีกครั้งและทำงานได้ดีขอบคุณ!
Domenic

1
+1. "for% i in (java.exe) do @echo% ~ $ PATH: i" เพิ่งบันทึกวันของฉัน ฉันเป็นเพียงผู้ใช้ Windows เป็นครั้งคราวและฉันไม่รู้ว่าอาจมี java.exe อื่นที่ซ่อนอยู่ใน c: \ windows \ system :)
david a.

1
คำสั่ง set path ข้างต้นใช้ไม่ได้สำหรับฉันใน windows 7 ฉันต้องใช้ set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin นั่นคือไม่มีเครื่องหมายคำพูด! ฉันไม่คุ้นเคย ด้วยบรรทัดคำสั่ง windows แต่ดูเหมือนว่าเครื่องหมายคำพูดจะถูกเก็บไว้ดังนั้นการมีไว้ใน% path% จะทำให้ไม่สามารถใช้งานได้โดยสิ้นเชิง
user716468

@ user716468 มีวิธี GUI ใน windows แทนบรรทัดคำสั่ง หากคุณใช้ Windows 7 เพียงพิมพ์ var ในการค้นหาเมนูเริ่มแล้วคลิกที่แก้ไขตัวแปรสภาพแวดล้อม หากคุณใช้ Windows XP ให้คลิกขวาที่ My Computer คลิกที่คุณสมบัติไปที่แท็บขั้นสูงแล้วคลิกปุ่มตัวแปรสภาพแวดล้อมที่ด้านล่าง คุณจะพบกล่องรายการสองกล่อง ค้นหาเส้นทางที่มีชื่อจากกล่องรายการด้านล่างและคลิกที่แก้ไข ตอนนี้ต่อท้ายเส้นทางไปยังJDKของคุณที่นำหน้าด้วยอัฒภาค คุณทำเสร็จแล้ว!
fz_salam

นอกจากนี้ยังมีคำสั่ง "where" ในบรรทัดคำสั่ง windows ล่าสุด
x29a

87

Windows OS ค้นหาไดเร็กทอรีปัจจุบันและไดเร็กทอรีที่แสดงอยู่ในตัวแปรสภาวะแวดล้อม PATH สำหรับโปรแกรมปฏิบัติการ โปรแกรมของ JDK (เช่นคอมไพเลอร์ Java javac.exe และ Java runtime java.exe) อยู่ในไดเร็กทอรี "\ bin" (โดยที่หมายถึงไดเร็กทอรีที่ติดตั้ง JDK เช่น C: \ Program Files \ Java \ jdk1.8.0_xx) คุณต้องรวมไดเร็กทอรี "\ bin" ไว้ใน PATH

ในการแก้ไขตัวแปรสภาพแวดล้อม PATH ใน Windows XP / Vista / 7/8:

  1. แผงควบคุม⇒ระบบ⇒การตั้งค่าระบบขั้นสูง

  2. เปลี่ยนเป็นแท็บ "ขั้นสูง" ⇒ตัวแปรสภาพแวดล้อม

  3. ใน "ตัวแปรระบบ" เลื่อนลงเพื่อเลือก "เส้นทาง" ⇒แก้ไข

((ตอนนี้อ่าน 3 ครั้งต่อไปนี้ก่อนดำเนินการต่อไม่มีการยกเลิก ))

ในช่อง "ค่าตัวแปร" ให้ใส่ "c: \ Program Files \ Java \ jdk1.8.0_xx \ bin" (แทนที่ xx ด้วยหมายเลขอัปเกรดและยืนยันว่านี่คือไดเรกทอรีไบนารี JDK ของคุณ !!!) ในด้านหน้าของทั้งหมดที่มีอยู่ ไดเร็กทอรีตามด้วยเซมิโคลอน (;) ซึ่งแยกไดเร็กทอรีไบนารีของ JDK ออกจากไดเร็กทอรีอื่น ๆ ที่มีอยู่ อย่าลบรายการที่มีอยู่ มิฉะนั้นแอปพลิเคชันที่มีอยู่บางตัวอาจไม่ทำงาน

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

ภาพหน้าจอ


สำหรับขั้นตอนที่ 4 ฉันพบว่าฉันต้องเลือก not jre <yournumber> แต่เป็น jdk <yournumber> จากนั้นทุกอย่างก็ทำงานได้ดี
Morgan Kenyon

เกลี้ยงเกลา! คำตอบที่ดีที่สุด ทำงานให้ฉัน
M_R_K

ในกรณีของฉันสำหรับขั้นตอนที่ 4 ฉันเปิด jdk ในสาระสำคัญฉันมีสิ่งนี้สำหรับ PATH: C: \ Program Files \ Java \ jdk1.7.0_67 \ bin javac.exe ไม่ได้อยู่ใน jre แต่อยู่ใน jdk
sedeh

Works for Me :)
RAJESH KUMAR ARUMUGAM

35

หลังจาก Google ไม่นานฉันก็รู้ว่า javac.exe จะอยู่ในJDK (C: \ Program Files \ Java \ jdk (หมายเลขเวอร์ชัน) \ bin) ไม่อยู่ในJRE (C: \ Program Files (x86) \ Java \ jre7 \ bin) "JRE ไม่ได้มาพร้อมกับคอมไพเลอร์มัน (JRE) เป็นเพียงสภาพแวดล้อมรันไทม์ของจาวาสิ่งที่คุณต้องการคือชุดพัฒนา Java" เพื่อใช้คอมไพเลอร์ javac

javac จะไม่ทำงานหากคุณชี้ bin ภายใน jre

ในการใช้ javac ใน cmd ต้องติดตั้ง JDK ในระบบของคุณ ...

สำหรับเส้นทาง javac

path = C: \ Program Files (x86) \ Java \ jre7 \ bin ผิด

path = C: \ Program Files \ Java \ jdk (หมายเลขเวอร์ชัน) \ bin ถูกต้อง

ตรวจสอบให้แน่ใจว่า "javac.exe" อยู่ใน"C: \ Program Files \ Java \ jdk (หมายเลขเวอร์ชัน) \ bin" ของคุณ

อย่าสับสนกับ JRE และ JDK ทั้งสองต่างกันโดยสิ้นเชิง

หากคุณไม่มี JDK กรุณาดาวน์โหลดจากลิงค์นี้

https://jdk.java.net/

หรือ

http://www.oracle.com/technetwork/java/javase/downloads/index.html

เธรดอ้างอิงสำหรับ JDK VS JRE JDK และ JRE ต่างกันอย่างไร


6

ฉันรู้ว่านี่อาจไม่ใช่ข้อผิดพลาดเฉพาะของคุณ แต่ครั้งหนึ่งฉันเคยมีพื้นที่ชั้นนำในเส้นทางของฉันและ java ก็ใช้งานได้ แต่ javac จะไม่

สำหรับสิ่งที่คุ้มค่าฉันขอเสนอคำแนะนำของปราชญ์: "ตรวจสอบเส้นทางของคุณอย่างละเอียด"


5

ลองใช้วิธีแก้ปัญหาที่นี่: http://techdem.centerkey.com/2009/05/javahome-command-script.html

สิ่งเหล่านี้มีประสิทธิภาพในการเปลี่ยนแปลงมากขึ้นเช่นเมื่อคุณอัปเกรด JDK หรือ JRE เนื่องจากไม่มีเส้นทางที่เข้ารหัสยาก

วิธีแก้ปัญหาอย่างรวดเร็ว (หากคุณไม่ต้องการอ่านบล็อก) คือ

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

จากนั้นคุณสามารถเพิ่มบรรทัดเหล่านี้ในสคริปต์เริ่มต้น / ล็อกอิน


2
สำหรับการเรียกใช้ javac เช่นนั้นฉันต้องใช้ "set PATH =% PATH%;% JAVA_HOME% \ bin" (สังเกตที่เพิ่ม \ bin)
user31389

4

ฉันต้องทำสิ่งนี้เพื่อให้มันทำงานบน windows 7 64

เปิดพรอมต์คำสั่ง (cmd.exe) แล้วพิมพ์:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

ตรวจสอบให้แน่ใจว่าคุณเปิดพรอมต์คำสั่งที่รันอยู่ทั้งหมดของ Windows เพื่อรับการอัปเดตตัวแปรสภาพแวดล้อมเช่นกัน


1
ฉันเดาว่าการยกเลิกการตั้งค่า classpath จะดีกว่าที่นี่ ฉันจะไม่ใช้ตัวแปร CLASSPATH โดยเฉพาะอย่างยิ่งไม่ใช่ใน Windows ที่เป็นแบบโกลบอลและมีผลต่อ
JRE

4

โอเคนี่อาจไม่ใช่กรณีเสมอไป แต่พวกเราหลายคนเคยทำผิดพลาดนี้ในอดีตและมีเพียงไม่กี่คนที่ยังไม่รู้เรื่องนี้นั่นคือทุกครั้งที่คุณต่อท้ายเส้นทาง (เส้นทางใด ๆ ) ของตัวแปรสภาพแวดล้อมใด ๆ คุณ มีแนวโน้มที่จะชนแถบเว้นวรรคหลัง "อัฒภาค" (ตามปกติหลังจาก "จุด" ขณะพิมพ์ในโปรแกรมแก้ไข)

สิ่งนี้จะสร้างช่องว่างชั้นนำในเส้นทางเช่น "C: \ Program Files \ Java \ jdk1.6.0 \ bin" ดังนั้นระบบจะไม่พบ "javac.exe"


2

เปลี่ยนโฟลเดอร์ "jdk1.7.0_45" "jdk1_7_0_60" และอัปเดตเส้นทางในสภาพแวดล้อม Windows มิฉะนั้นเส้นทางจะละเว้นจุดที่อยู่ด้านหน้าซึ่งย่อมาจากไฟล์ที่ซ่อนอยู่ดังนั้นโฟลเดอร์จะไม่แสดงในสตริง PATH



0

ฉันประสบปัญหาเดียวกันกับที่ java ใช้งานได้ แต่ javac ไม่อยู่ในพรอมต์ cmd ใน Windows 8

ปัญหาเกิดขึ้นเนื่องจากฉันลืมลบ'>'ที่ส่วนท้ายของชื่อพา ธ นั่นคือมันเป็นดังนี้:

C:\Program Files\Java\jdk*\bin>

ที่มันคิดว่าจะเป็นแบบนี้:

C:\Program Files\Java\jdk*\bin

0

เส้นทางจะถูกตั้งค่าสำหรับบัญชีผู้ดูแลระบบเท่านั้น ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเรียกใช้พรอมต์คำสั่งในฐานะผู้ดูแลระบบหากคุณยังไม่ได้อยู่


0

ตรวจสอบว่าคุณไม่อนุญาตให้เว้นวรรค (ช่องว่าง) ระหว่างเส้นทางในตัวแปร Path ปัญหาของฉันคือฉันมีพื้นที่สีขาวและฉันเชื่อว่า Windows ถือว่าเป็น NULL และไม่ได้อ่านเส้นทางของฉันใน Java


0

ฉันประสบปัญหาเดียวกันที่โพสต์ในชื่อนี้ Java จะทำงาน แต่javacจะไม่อยู่ในพรอมต์คำสั่งของ Windows ( cmd.exe)

สำหรับฉันมันเป็นเพียงแค่การวางช่องว่างไว้เมื่อเพิ่มตัวแปรสภาพแวดล้อมC:\Program Files\Java\jdk1.8.0\binในตอนท้าย ลบช่องว่างระหว่างและเส้นทางไฟล์ถัดไป%PATH%
;


0

ตอนนี้ฉันรู้สึกขอบคุณที่นี่เป็นคำถามเก่า แต่วิธีแก้ปัญหาของฉันยังไม่มีคำตอบที่นี่ดังนั้นจึงโพสต์ไว้เผื่อว่ามีใครลองทำทั้งหมด

ในกรณีของฉันการติดตั้ง Java JRE ก่อนหน้านี้ (ใน ProgramData / Oracle / Java) มีตัวแปรเส้นทางที่ด้านบนของรายการตัวแปรเส้นทางของฉัน เนื้อหาของพา ธ "Oracle" นั้นมี java.exe แต่ไม่ใช่ javac.exe ฉันเพิ่มเส้นทาง JDK แบบเต็มของฉันไปที่ด้านบนสุดของรายการตัวแปรพา ธ ข้างหน้าหนึ่ง "Oracle" จากนั้นก็หยิบ javac.exe รวมทั้ง java


0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

วิธีนี้ใช้ได้ผลกับฉัน


ฉันขอแนะนำให้เพิ่มคำอธิบายประกอบเพิ่มเติมในคำตอบของคุณโดยตรงแทนที่จะเพียงแค่ให้ลิงก์ลิงก์อาจเสียหาย ขอแสดงความนับถือ
YakovL

-3

เมื่อฉันพยายามทำให้. java เป็น. class คำสั่ง Javac ไม่ทำงาน ฉันทำให้มันใช้งานได้โดยไปที่ C: \ Program Files (x86) \ Java \ jdk1.7.0_04 \ bin และเมื่อฉันอยู่ในไดเรกทอรีนั้นฉันพิมพ์ Javac.exe C \ Test \ test.java และทำให้คลาสนั้น ชั้นเชิง. ลองดูสิ


-7

ให้เป็น "C: \ Program Files \ Java \ jdk1.6.0_16 \ bin" ลบแบ็กสแลชมันจะใช้งานได้


2
ฉันไม่คิดว่าถูกต้อง ฉันสามารถตั้งค่าเส้นทางของฉันให้เป็นอะไรก็ได้นอกจาก "C: \ Program Files \ Java \ jdk1.6.0_16 \ bin \" (พร้อมเครื่องหมายทับ) และมันก็ยังใช้งานได้ดี
paxdiablo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.