it-swarm-id.com

javac tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch

Saya mengalami kesalahan saat mencoba mengompilasi program Java.

Saya menggunakan Windows (ini adalah masalah khusus Windows) dan saya memiliki JDK terbaru yang diinstal.

Saya telah mencoba solusi yang melibatkan variabel PATH, tetapi kesalahan tetap ada.

Output konsol:

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.
223
user987137

TL; DR

Untuk pembaca berpengalaman:

  1. Temukan jalur Java; sepertinya ini: C:\Program Files\Java\jdkxxxx\bin\
  2. Pencarian menu awal untuk "variabel lingkungan" untuk membuka dialog opsi.
  3. Periksa PATH. Hapus jalur Java lama.
  4. Tambahkan path Java baru ke PATH.
  5. Edit Java_HOME.
  6. Tutup dan buka kembali konsol/IDE.

Selamat datang!

Anda telah menemukan salah satu masalah teknis paling terkenal yang dihadapi pemula Java: pesan kesalahan 'xyz' is not recognized as an internal or external command....

Singkatnya, Anda belum menginstal Java dengan benar . Menyelesaikan instalasi Java pada Windows membutuhkan beberapa langkah manual. Anda harus selalu melakukan langkah-langkah ini setelah menginstal Java, termasuk setelah memutakhirkan JDK.

Variabel lingkungan dan PATH

(Jika Anda sudah mengerti ini, jangan lewatkan tiga bagian berikutnya.)

Ketika Anda menjalankan javac HelloWorld.Java, cmd harus menentukan di mana javac.exe berada. Ini dilakukan dengan PATH, variabel lingkungan.

variabel lingkungan adalah pasangan nilai kunci khusus (mis. windir=C:\WINDOWS). Sebagian besar datang dengan sistem operasi, dan beberapa diperlukan untuk fungsi sistem yang tepat. Daftarnya diteruskan ke setiap program (termasuk cmd) ketika dimulai. Pada Windows , ada dua jenis : variabel lingkungan pengguna dan variabel lingkungan sistem.

Anda dapat melihat variabel lingkungan Anda seperti ini:

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
...

Variabel yang paling penting adalah PATH . Ini adalah daftar jalur, dipisahkan oleh ;. Ketika sebuah perintah dimasukkan ke cmd, setiap direktori dalam daftar akan dipindai untuk dieksekusi yang cocok.

Di komputer saya, PATH adalah:

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

Ketika Anda menjalankan javac HelloWorld.Java, cmd, setelah menyadari bahwa javac bukan perintah internal , cari sistem PATH diikuti oleh pengguna PATH . Secara mekanis memasuki setiap direktori dalam daftar, dan memeriksa apakah javac.com, javac.exe, javac.bat, dll. Ada. Ketika ia menemukan javac, ia menjalankannya. Ketika tidak, ia mencetak 'javac' is not recognized as an internal or external command, operable program or batch file.

Anda harus menambahkan direktori Java executables ke PATH.

JDK vs. JRE

(Jika Anda sudah mengerti ini, silakan lewati bagian ini.)

Saat mengunduh Java, Anda ditawari pilihan antara:

  • Java Runtime Environment (JRE), yang mencakup alat yang diperlukan untuk menjalankan program Java, tetapi tidak untuk mengkompilasi yang baru - berisi Java tetapi tidak javac.
  • Java Development Kit (JDK), yang berisi Java dan javac, bersama dengan sejumlah alat pengembangan lainnya. JDK adalah superset dari JRE.

Anda harus memastikan Anda telah menginstal JDK . Jika Anda hanya menginstal JRE, Anda tidak dapat menjalankan javac karena Anda tidak memiliki instalasi kompiler Java pada hard drive Anda. Periksa daftar program Windows Anda, dan pastikan nama paket Java menyertakan kata-kata "Kit Pengembangan" di dalamnya.

Jangan gunakan set

(Jika Anda tidak berencana untuk melakukannya, silakan lewati bagian ini.)

Beberapa jawaban lain merekomendasikan untuk menjalankan beberapa variasi:

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

Jangan lakukan itu. Ada beberapa masalah utama dengan perintah itu:

  1. Perintah ini menghapus semua yang lain dari PATH dan menggantinya dengan jalur Java. Setelah menjalankan perintah ini, Anda mungkin menemukan berbagai perintah lain tidak berfungsi.
  2. Path Java Anda mungkin bukan C:\Program Files\Java\jdk1.7.0_09\bin - Anda hampir pasti memiliki versi JDK yang lebih baru, yang akan memiliki path yang berbeda.
  3. PATH hanya berlaku untuk sesi cmd saat ini. Anda harus memasukkan kembali perintah set setiap kali Anda membuka Command Prompt.

Poin # 1 dan # 2 dapat diselesaikan dengan versi yang sedikit lebih baik ini:

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

Tapi itu hanya ide yang buruk secara umum.

Temukan jalur Java

Cara yang benar dimulai dengan menemukan di mana Anda telah menginstal Java. Ini tergantung pada bagaimana Anda telah menginstal Java.

Pemasang exe

Anda telah menginstal Java dengan menjalankan program pengaturan. Pemasang Oracle menempatkan versi Java di bawah C:\Program Files\Java\ (atau C:\Program Files (x86)\Java\). Dengan File Explorer atau Command Prompt, navigasikan ke direktori itu.

Setiap subfolder mewakili versi Java. Jika hanya ada satu, Anda telah menemukannya. Jika tidak, pilih yang terlihat seperti versi yang lebih baru. Pastikan nama folder dimulai dengan jdk (bukan jre). Masukkan direktori.

Kemudian masukkan direktori bin itu.

Anda sekarang berada di direktori yang benar. Salin jalurnya. Jika di File Explorer, klik bilah alamat. Jika di Command Prompt, salin Prompt.

Path Java yang dihasilkan harus dalam bentuk (tanpa tanda kutip):

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

File zip

Anda telah mengunduh .Zip yang berisi JDK. Ekstrak ke tempat acak di mana itu tidak akan menghalangi Anda; C:\Java\ adalah pilihan yang dapat diterima.

Kemudian cari folder bin di suatu tempat di dalamnya.

Anda sekarang berada di direktori yang benar. Salin jalurnya. Ini adalah jalur Java.

Ingatlah untuk tidak pernah memindahkan folder, karena itu akan membatalkan jalur.

Buka dialog pengaturan

Itu adalah dialog untuk mengedit PATH. Ada banyak cara untuk mencapai dialog itu, tergantung pada versi Windows Anda, pengaturan UI, dan seberapa kacau konfigurasi sistem Anda.

Cobalah beberapa di antaranya:

  • Mulai Menu/kotak pencarian bilah tugas »pencarian" variabel lingkungan "
  • Menangkan + R »control sysdm.cpl,,3
  • Menangkan + R »SystemPropertiesAdvanced.exe» Variabel Lingkungan
  • File Explorer »ketik di address bar Control Panel\System and Security\System» Pengaturan Sistem Lanjut (paling kiri, di sidebar) »Variabel Lingkungan
  • Desktop »klik kanan PC ini» Properti »Pengaturan Sistem Lanjut» Variabel Lingkungan
  • Menu Mulai »klik kanan Komputer» Properti »Pengaturan Sistem Lanjut» Variabel Lingkungan
  • Panel Kontrol (mode ikon) »Sistem» Pengaturan Sistem Lanjut »Variabel Lingkungan
  • Panel Kontrol (mode kategori) »Sistem dan Keamanan» Sistem »Pengaturan Sistem Lanjut» Variabel Lingkungan
  • Desktop »klik kanan Komputer Saya» Tingkat Lanjut »Variabel Lingkungan
  • Control Panel »Sistem» Lanjutan »Variabel Lingkungan

Semua ini akan membawa Anda ke dialog pengaturan yang benar.

Jika Anda menggunakan Windows 10, Microsoft telah memberkati Anda dengan fancy UI baru untuk mengedit PATH. Jika tidak, Anda akan melihat PATH dalam kemuliaan penuh bertanda koma penuh, diperas ke dalam kotak teks single-line. Lakukan yang terbaik untuk melakukan pengeditan yang diperlukan tanpa merusak sistem Anda.

Bersihkan PATH

Lihatlah PATH. Anda hampir pasti memiliki dua variabel PATH (karena variabel lingkungan pengguna vs sistem). Anda harus melihat keduanya.

Periksa jalur Java lainnya dan hapus. Keberadaan mereka dapat menyebabkan segala macam konflik. (Misalnya, jika Anda memiliki JRE 8 dan JDK 11 di PATH, dalam urutan itu, maka javac akan memanggil kompiler Java 11, yang akan membuat file 55 .class versi, tetapi Java akan memanggil Java 8 JVM, yang hanya mendukung hingga versi 52, dan Anda akan mengalami kesalahan versi tidak didukung dan tidak dapat mengkompilasi dan menjalankan program apa pun.) Menghindari masalah ini dengan memastikan Anda hanya memiliki satu jalur Java di PATH. Dan saat Anda melakukannya, Anda juga bisa uninstall versi Java lama juga. Dan ingat bahwa Anda tidak perlu memiliki JDK dan JRE.

Jika Anda memiliki C:\ProgramData\Oracle\Java\javapath, hapus juga . Oracle bermaksud untuk memecahkan masalah kerusakan jalur Java setelah peningkatan dengan membuat simbolic link yang akan selalu mengarah ke instalasi Java terbaru. Sayangnya, sering kali menunjuk ke lokasi yang salah atau tidak berfungsi . Lebih baik menghapus entri ini dan mengelola jalur Java secara manual.

Sekarang juga merupakan kesempatan yang baik untuk melakukan Housekeeping umum di PATH. Jika Anda memiliki jalur yang berkaitan dengan perangkat lunak yang tidak lagi diinstal pada PC Anda, Anda dapat menghapusnya. Anda juga dapat mengacak urutan jalur (jika Anda peduli dengan hal-hal seperti itu).

Tambahkan ke PATH

Sekarang ambil path Java yang Anda temukan tiga langkah yang lalu, dan letakkan di sistem PATH.

Seharusnya tidak masalah di mana dalam daftar jalur baru Anda pergi; menempatkannya di ujung adalah pilihan yang bagus.

Jika Anda menggunakan UI pra-Windows 10, pastikan Anda telah menempatkan titik koma dengan benar. Harus ada satu yang memisahkan setiap jalur dalam daftar.

Sebenarnya tidak banyak yang bisa dikatakan di sini. Cukup tambahkan path ke PATH dan klik OK.

Set Java_HOME

Saat Anda melakukannya, Anda juga dapat mengatur Java_HOME juga. Ini adalah variabel lingkungan lain yang juga harus mengandung path Java. Banyak program Java dan non-Java, termasuk sistem Java build populer Gradle , akan melempar kesalahan jika tidak diset dengan benar.

Jika Java_HOME tidak ada, buat itu sebagai variabel lingkungan sistem baru. Setel ke jalur Java yang sama yang Anda tambahkan ke PATH.

Ingatlah untuk mengedit Java_HOME setelah memutakhirkan Java juga.

Tutup dan buka kembali Command Prompt

Meskipun Anda telah memodifikasi PATH, semua program yang berjalan, termasuk cmd, hanya melihat PATH yang lama. Ini karena daftar semua variabel lingkungan hanya disalin ke program ketika mulai dijalankan; setelah itu, hanya berkonsultasi salinan yang di-cache.

Tidak ada cara yang baik untuk menyegarkan variabel lingkungan cmd , jadi cukup tutup Command Prompt dan buka lagi. Jika Anda menggunakan IDE, tutup dan buka kembali juga.

Lihat juga

374
carlos c.

coba ini .. Saya sudah juga tetapi sekarang diselesaikan di XP ..

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.Java
75
Ahmad Azwar Anas

Anda salah mengetik perintah set - Anda melewatkan backslash setelah C:. Harus:

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

Jalankan berikut ini dari perintah Prompt: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" atau set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

Saya sudah mencoba ini dan berfungsi dengan baik.

9
fresher

Jika perintah Java berfungsi dan mendapatkan masalah dengan javac. lalu cek dulu di direktori bin file javac.exe jdk apakah ada atau tidak. Jika ada file javac.exe maka set Java_HOME sebagai variabel Sistem.

5
Umrao Rawat

Periksa variabel lingkungan Anda.

Dalam kasus saya, Java_HOME saya atur di variabel System dan juga di Akun Pengguna variabel saya dan yang kedua disetel ke versi Java yang salah . Saya juga punya masalah yang sama dengan variabel Path.

Setelah menghapus Java_HOME dari Akun Pengguna saya variabel dan menghapus jalur yang salah dari variabel Path itu berfungsi dengan benar.

3
romanoma