javac dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
Java programlarını derlemeye çalışırken bir hata ile karşılaşıyorum.
Windows kullanıyorum (bu Windows'a özgü bir sorun) ve en son JDK yüklü.
PATH` değişkenini içeren bir çözüm denedim, ancak hata devam ediyor.
Konsol çıktısı:
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.
248
3
TL;DR
Deneyimli okuyucular için:
PATH
'e ekleyin.Konsol/IDE`yi kapatın ve yeniden açın.
Hoş geldiniz! Java'ya yeni başlayanların karşılaştığı en kötü şöhretli teknik sorunlardan biriyle karşılaştınız:
'xyz' dahili veya harici bir komut olarak tanınmıyor...
hata mesajı. Özetle, Java'yı doğru bir şekilde yüklemediniz. Windows'ta Java kurulumunun tamamlanması bazı manuel adımlar gerektirir. JDK'yı yükselttikten sonra da dahil olmak üzere Java'yı yükledikten sonra bu adımları her zaman gerçekleştirmelisiniz.Ortam değişkenleri ve
PATH
(Bunu zaten anladıysanız, sonraki üç bölümü atlamaktan çekinmeyin.) javac HelloWorld.java
yı çalıştırdığınızda, cmd
javac.exenin nerede olduğunu belirlemelidir. Bu, bir ortam değişkeni olan
PATH` ile gerçekleştirilir. Bir [çevre değişkeni](https://en.wikipedia.org/wiki/Environment_variable) özel bir anahtar-değer çiftidir (örneğinwindir=C:\WINDOWS
). Çoğu işletim sistemiyle birlikte gelir ve bazıları sistemin düzgün çalışması için gereklidir. Bunların bir listesi her program başladığında (cmd dahil) programa aktarılır. Windows'da, iki tür vardır: kullanıcı ortam değişkenleri ve sistem ortam değişkenleri*. Ortam değişkenlerinizi şu şekilde görebilirsiniz:En önemli değişken
PATH
. Bu,;
ile ayrılmış yolların bir listesidir. cmdye bir komut girildiğinde, listedeki her dizin eşleşen bir çalıştırılabilir dosya için taranacaktır. Benim bilgisayarımda
PATH` şöyledir:javac HelloWorld.java
yı çalıştırdığınızda, cmd,
javacın bir [dahili komut](https://ss64.com/nt/syntax-internal.html) olmadığını fark ettikten sonra, [sistem
PATHini ve ardından kullanıcı
PATHini](https://superuser.com/questions/867728/user-vs-system-environment-variables-do-system-variables-override-user-variabl) arar. Listedeki her dizine mekanik olarak girer ve [
javac.com,
javac.exe,
javac.bat, vb](https://www.nextofwindows.com/what-is-pathext-environment-variable-in-windows) olup olmadığını kontrol eder. javac
ı bulduğunda, onu çalıştırır. Bulamadığında,'javac' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor
yazdırır. Java çalıştırılabilir dizininiPATH
dizinine eklemeniz gerekir.JDK vs. JRE
*(Bunu zaten anlıyorsanız, bu bölümü atlamaktan çekinmeyin.) Java'yı indirirken, size aşağıdakiler arasında bir seçenek sunulur:
java
içerir ancakjavac
içermez.java
hem dejavac
ile birlikte bir dizi başka geliştirme aracı içerir. JDK, JRE'nin bir üst kümesidir. JDK'yı yüklediğinizden emin olmalısınız**. Yalnızca JREyi yüklediyseniz, sabit diskinizde Java derleyicisinin bir yüklemesi olmadığından
javac`ı çalıştıramazsınız. Windows programlar listenizi kontrol edin ve Java paketinin adında "Development Kit" kelimelerinin bulunduğundan emin olun.set
kullanmayın*(Zaten planlamıyorsanız, bu bölümü atlamaktan çekinmeyin.) Diğer bazı cevaplar, bazı varyasyonların uygulanmasını önermektedir:
Yapma bunu. Bu komutla ilgili birkaç önemli sorun vardır:
PATH
den diğer her şeyi siler ve Java yolu ile değiştirir. Bu komutu çalıştırdıktan sonra, diğer çeşitli komutların çalışmadığını görebilirsiniz.C:\Program Files\Java\jdk1.7.0_09\bin
değildir - neredeyse kesinlikle farklı bir yola sahip olan daha yeni bir JDK sürümüne sahipsiniz.PATH
**sadece mevcut cmd oturumu için geçerlidir. Komut İstemi'ni her açtığınızdaset
komutunu yeniden girmeniz gerekecektir.Ama genel olarak kötü bir fikir.
Java yolunu bul
Doğru yol, Java'yı nereye yüklediğinizi bulmakla başlar. Bu, Java'yı nasıl yüklediğinize bağlıdır.
Exe yükleyici
Java'yı bir kurulum programı çalıştırarak yüklediniz. Oracle'ın yükleyicisi Java sürümlerini
C:\Program Files\Java\
(veyaC:\Program Files (x86)\Java\
) altına yerleştirir. Dosya Gezgini veya Komut İstemi ile bu dizine gidin. Her alt klasör bir Java sürümünü temsil eder. Eğer sadece bir tane varsa, onu buldunuz demektir. Aksi takdirde, daha yeni sürüme benzeyeni seçin. Klasör adınınjdk
ile başladığından emin olun (jre
yerine). Dizini girin. Sonra bununbin
dizinini girin. Şimdi doğru dizindesiniz. Yolu kopyalayın. Dosya Gezgini'ndeyse adres çubuğuna tıklayın. Komut İstemi'ndeyse, copy komut istemini tıklayın. Ortaya çıkan Java yolu (tırnak işaretleri olmadan) şeklinde olmalıdır:Zip dosyası
JDK içeren bir .zip dosyası indirdiniz. Yolunuza çıkmayacağı rastgele bir yere çıkarın;
C:\Java\
kabul edilebilir bir seçimdir. Daha sonrabin
klasörünü içinde bir yere yerleştirin. Artık doğru dizindesiniz. Yolunu kopyalayın. Bu Java yoludur. Yolu geçersiz kılacağı için klasörü asla taşımamayı unutmayın.Ayarlar iletişim kutusunu açın
PATH
ı düzenlemek için kullanılan iletişim kutusudur. Windows sürümünüze, kullanıcı arayüzü ayarlarınıza ve sistem yapılandırmanızın ne kadar karışık olduğuna bağlı olarak bu iletişim kutusuna ulaşmanın birçok yolu vardır. Bunlardan bazılarını deneyin:control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» Ortam DeğişkenleriDenetim Masası\Sistem ve Güvenlik\Sistem
yazın » Gelişmiş Sistem Ayarları (en solda, kenar çubuğunda) » Ortam DeğişkenleriPATH
ı düzenlemek için süslü yeni bir kullanıcı arayüzü sunmuştur. Aksi takdirde,PATH
ı tek satırlık bir metin kutusuna sıkıştırılmış, noktalı virgülle kaplanmış tüm ihtişamıyla göreceksiniz. Sisteminizi bozmadan gerekli düzenlemeleri yapmak için elinizden geleni yapın.PATH
ı temizleyinPATH'a bakın. Neredeyse kesinlikle iki
PATH
değişkeniniz var (kullanıcı ve sistem ortam değişkenleri nedeniyle). Her ikisine de bakmanız gerekir. Diğer Java yollarını kontrol edin ve bunları kaldırın. Bunların varlığı her türlü çatışmaya neden olabilir. (Örneğin,PATH
içinde sırasıyla JRE 8 ve JDK 11 varsa,javac
sürüm 55.class
dosyaları oluşturacak olan Java 11 derleyicisini çağıracak, ancakjava
yalnızca 52 sürümüne kadar destekleyen Java 8 JVM'yi çağıracak ve desteklenmeyen sürüm hataları ile karşılaşacak ve herhangi bir programı derleyip çalıştıramayacaksınız). Bu sorunlarıPATH
içinde yalnızca bir Java yolunuz olduğundan emin olarak ortadan kaldırın. Ve bunu yaparken, eski Java sürümlerini kaldırın da yapabilirsiniz. Ve unutmayın ki hem JDK hem de JRE'ye sahip olmanıza gerek yok. EğerC:\ProgramData\Oracle\Java\javapath
dosyanız varsa, onu da kaldırın**. Oracle, Java yollarının yükseltmelerden sonra bozulması sorununu, her zaman en son Java yüklemesine işaret edecek bir sembolik bağlantı oluşturarak çözmeyi amaçlamıştır. Ne yazık ki, genellikle yanlış konuma işaret ediyor veya basitçe çalışmıyor. Bu girdiyi kaldırmak ve Java yolunu manuel olarak yönetmek daha iyidir. ŞimdiPATH
üzerinde genel temizlik yapmak için de iyi bir fırsat. Bilgisayarınızda artık yüklü olmayan yazılımlarla ilgili yollar varsa, bunları kaldırabilirsiniz. Ayrıca yolların sırasını da karıştırabilirsiniz (eğer bu gibi şeylere önem veriyorsanız).PATH
'e ekleŞimdi üç adım önce bulduğunuz Java yolunu alın ve sistem
PATH
ine yerleştirin. Yeni yolunuzun listenin neresinde olduğu önemli değildir; en sona yerleştirmek iyi bir seçimdir. Windows 10 öncesi kullanıcı arayüzünü kullanıyorsanız, noktalı virgülleri doğru yerleştirdiğinizden emin olun. Listedeki her yolu ayıran tam bir tane olmalıdır. Burada gerçekten söylenecek fazla bir şey yok. Basitçe yolu `PATH'e ekleyin ve Tamam'a tıklayın.Set
JAVA_HOME
Hazır eliniz değmişken
JAVA_HOME
ayarını da yapabilirsiniz. Bu, Java yolunu da içermesi gereken başka bir ortam değişkenidir. Popüler Java derleme sistemi Gradle dahil olmak üzere birçok Java ve Java dışı program, doğru ayarlanmamışsa hata verecektir. EğerJAVA_HOME
mevcut değilse, bunu yeni bir sistem ortam değişkeni olarak oluşturun. BunuPATH
içine eklediğiniz aynı Java yoluna ayarlayın. Javayı yükselttikten sonra da
JAVA_HOME`u düzenlemeyi unutmayın.Komut İstemi'ni kapatın ve yeniden açın
PATH
ı değiştirmiş olmanıza rağmen, cmd de dahil olmak üzere çalışan tüm programlar yalnızca eski
PATH`ı görür. Bunun nedeni, tüm ortam değişkenlerinin listesinin yalnızca program çalışmaya başladığında programa kopyalanmasıdır; bundan sonra program yalnızca önbelleğe alınmış kopyaya başvurur. cmd'nin ortam değişkenlerini yenilemenin](https://stackoverflow.com/questions/171588/is-there-a-command-to-refresh-environment-variables-from-the-command-prompt-in-w) iyi bir yolu yoktur, bu nedenle Komut İstemi'ni kapatıp tekrar açmanız yeterlidir. Eğer bir IDE kullanıyorsanız, onu da kapatıp yeniden açın.Ayrıca bakınız
Set
komutunu yanlış yazdınız -
C:`'den sonraki ters eğik çizgiyi atladınız. Öyle olmalı:Eğer java komutu çalışıyor ve javac ile sorun yaşıyorsanız. ilk olarak jdk'nın bin dizininde javac.exe dosyasının olup olmadığını kontrol edin. Eğer javac.exe dosyası mevcutsa, Sistem değişkeni olarak
JAVA_HOME
ayarlayın.