javac dahili veya harici komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor [kapalı]


253

Java programlarını derlemeye çalışırken bir hatayla karşılaşıyorum.

Windows'tayım (bu Windows'a özgü bir sorundur) ve en son JDK'yı yükledim.

PATHDeğişkeni içeren bir çözüm denedim , ancak hata devam ediyor.

Konsol çıkışı:

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
bence yolunuz ayarlanmadı. Çevrenizde değişken ve yol ayarlamak onların
Ron

2
Bu soru konu dışı gibi görünmektedir, çünkü gerçek JDK kurulum talimatlarında kolayca bulunabilir ve buradaki yanıt günceldir ve buradaki herhangi bir cevaptan daha yüksek kalitededir. Ayrıca, tüm platformlar için, resmi başlangıç ​​eğitiminin ilk bölümünde de mevcuttur .
Jason C

8
Bilgi için Ta Jason C. Ama itiraf ediyorum ben bu konu dışı konu arama kararı bu cevabı uptick diğerleri sayısı ile oranlar gibi görünüyor. Yapacağım gibi.
Matt Stevens


Yeni bir değişken eklemek daha kolaydır ve yeni bir "PATH" değişkeni oluşturduktan sonra noktalı virgül (;) ve değerin sonuna eklediğinizden emin olun.
Amir Md Amiruzzaman

Yanıtlar:


434

TL; DR

Deneyimli okuyucular için:

  1. Java yolunu bulun; şuna benzer:C:\Program Files\Java\jdkxxxx\bin\
  2. Seçenekler menüsü iletişim kutusunu açmak için Başlat menüsünde "ortam değişkeni" arayın.
  3. İncele PATH. Eski Java yollarını kaldırın.
  4. Adlı yeni Java yolunu ekleyin PATH.
  5. Düzenle JAVA_HOME.
  6. Konsolu / IDE'yi kapatıp yeniden açın.

Hoşgeldiniz!

Java yeni başlayanların karşılaştığı en kötü teknik sorunlardan biriyle karşılaştınız: 'xyz' is not recognized as an internal or external command...hata mesajı.

Özetle, Java'yı doğru şekilde yüklemediniz . Windows'ta Java kurulumunun tamamlanması için bazı manuel adımlar gerekir. JDK'yı yükselttikten sonra da dahil olmak üzere Java'yı yükledikten sonra her zaman bu adımları gerçekleştirmelisiniz.

Çevre değişkenleri ve PATH

(Bunu zaten anlıyorsanız, sonraki üç bölümü atlamaktan çekinmeyin.)

Eğer çalıştırdığınızda javac HelloWorld.javanerede, cmd belirlemek zorundadır javac.exeyer almaktadır. Bu PATHbir ortam değişkeni ile gerçekleştirilir .

Bir ortam değişkeni özel bir anahtar değeri çifti (örneğin bir windir=C:\WINDOWS). Çoğu işletim sistemi ile birlikte geldi ve bazıları sistemin düzgün çalışması için gerekli. Bunların bir listesi başladığında her programa (cmd dahil) geçirilir. Windows'ta vardır iki tip : kullanıcı ortam değişkenleri ve sistem ortam değişkenleri .

Ortam değişkenlerinizi şu şekilde görebilirsiniz:

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

En önemli değişken PATH. İle ayrılmış yolların bir listesidir; . Cmd'ye bir komut girildiğinde, listedeki her dizin eşleşen bir yürütülebilir dosya için taranır.

Bilgisayarımda 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

Çalıştırdığınızda javac HelloWorld.java, cmd, bunun dahili bir komutjavac olmadığını anladıktan sonra, sistemi ve ardından kullanıcıyı arar . Bu mekanik listedeki her dizin girer ve kontrol durumunda , , vb bulunur. Bulduğunda çalıştırır. Yapmadığında yazdırırPATHPATHjavac.comjavac.exejavac.batjavac'javac' is not recognized as an internal or external command, operable program or batch file.

Java yürütülebilir dizinini PATH .

JDK ve JRE Karşılaştırması

(Bunu zaten anlıyorsanız, bu bölümü atlamaktan çekinmeyin.)

Java'yı indirirken aşağıdakiler arasından seçim yapabilirsiniz:

  • Java Runtime Environment gerekli araçları içerir (JRE) Java programları çalıştırmak için, ama değil içerdiği - yenilerini derlemeye javaancakjavac .
  • Java Development Kit hem de içerir (JDK), javave javacdiğer geliştirme araçları ile bir dizi ile birlikte. JDK, JRE'nin bir üst kümesidir.

JDK'yı yüklediğinizden emin olmalısınız . Yalnızca JRE yazılımını yüklediyseniz,javac sabit sürücünüzde Java derleyicisini yüklemediğiniz için . Windows programları listenizi kontrol edin ve Java paketinin adının içinde "Geliştirme Kiti" kelimelerini içerdiğinden emin olun.

Kullanma set

(Yine de planlamadıysanız, bu bölümü atlamaktan çekinmeyin.)

Diğer bazı cevaplar, aşağıdakilerin bazı varyasyonlarının yürütülmesini önerir:

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

Böyle yapma. Bu komutla ilgili birkaç önemli sorun var:

  1. Bu komut her şeyi siler gelen PATHve Java yolu ile değiştirir. Bu komutu yürüttükten sonra, çalışmayan başka komutlar da bulabilirsiniz.
  2. Java yolunuz büyük olasılıkla değil C:\Program Files\Java\jdk1.7.0_09\bin - neredeyse kesinlikle JDK'nın farklı bir yolu olan daha yeni bir sürümüne sahipsiniz.
  3. Yeni PATH yalnızca geçerli cmd oturumu için geçerlidir . setKomut İstemi'ni her açışınızda komutu yeniden girmeniz gerekecektir .

# 1 ve # 2 puanları bu biraz daha iyi sürümle çözülebilir:

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

Ancak genel olarak kötü bir fikirdir.

Java yolunu bulun

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\(veya C:\Program Files (x86)\Java\) altına yerleştirir . Dosya Gezgini veya Komut İstemi ile bu dizine gidin.

Her alt klasör Java'nın bir sürümünü temsil eder. Sadece bir tane varsa, onu buldun. Aksi takdirde, yeni sürüme benzeyen sürümü seçin. Klasör adının jdk(aksine jre) ile başladığından emin olun . Dizini girin.

Ardından bindizini girin .

Şimdi doğru dizindesiniz. Yolu kopyalayın. Dosya Gezgini'ndeyse, adres çubuğunu tıklayın. Komut İstemi'ndeyse, istemi kopyalayın .

Ortaya çıkan Java yolu (tırnak işaretleri olmadan) şeklinde olmalıdır:

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

Sıkıştırılmış dosya

JDK içeren bir .zip indirdiniz. Yolunuza çıkmayacağı rastgele bir yere çıkarın; C:\Java\kabul edilebilir bir seçimdir.

Ardından binklasörü içinde bir yere yerleştirin.

Şimdi doğru dizindesiniz. Yolunu kopyalayın. Bu Java yoludur.

Asla klasörü taşımamayı unutmayın, çünkü bu yolu geçersiz kılar.

Ayarlar iletişim kutusunu aç

Düzenlemek için iletişim kutusu budur PATH. Windows sürümünüze, kullanıcı arayüzü ayarlarınıza ve sistem yapılandırmanızın ne kadar dağınık olduğuna bağlı olarak bu iletişim kutusuna ulaşmanın birçok yolu vardır.

Bunlardan bazılarını deneyin:

  • Başlat Menüsü / görev çubuğu arama kutusu »" ortam değişkeni "için arama
  • Kazan + R » control sysdm.cpl,,3
  • Win + R » SystemPropertiesAdvanced.exe» Ortam Değişkenleri
  • Dosya Gezgini »adres çubuğuna yazın Control Panel\System and Security\System » Gelişmiş Sistem Ayarları (en solda, kenar çubuğunda) »Ortam Değişkenleri
  • Masaüstü »Bu PC'ye sağ tıklayın» Özellikler »Gelişmiş Sistem Ayarları» Ortam Değişkenleri
  • Başlat Menüsü »sağ tıklayın Bilgisayar» Özellikler »Gelişmiş Sistem Ayarları» Ortam Değişkenleri
  • Kontrol Paneli (simge modu) »Sistem» Gelişmiş Sistem Ayarları »Ortam Değişkenleri
  • Kontrol Paneli (kategori modu) »Sistem ve Güvenlik» Sistem »Gelişmiş Sistem Ayarları» Ortam Değişkenleri
  • Masaüstü »Bilgisayarım'a sağ tıklayın» Gelişmiş »Ortam Değişkenleri
  • Kontrol Paneli »Sistem» Gelişmiş »Ortam Değişkenleri

Bunlardan herhangi biri sizi doğru ayarlar iletişim kutusuna götürmelidir.

Windows 10 kullanıyorsanız, Microsoft sizi düzenlemek için süslü yeni bir kullanıcı arayüzü ile kutsadı PATH. Aksi takdirde, PATHtek noktalı bir metin kutusuna sıkıştırılmış tam noktalı virgülle kaplı görkeminde göreceksiniz . Sisteminizi bozmadan gerekli düzenlemeleri yapmak için elinizden geleni yapın.

Temiz PATH

Şuna bak PATH. Neredeyse kesinlikle iki PATHdeğişkeniniz var (kullanıcı ve sistem ortam değişkenleri nedeniyle). Her ikisine de bakmalısın.

Diğer Java yollarını kontrol edin ve kaldırın. Onların varlığı her türlü çatışmaya neden olabilir. (Örneğin, JRE 8 ve JDK 11 varsa PATH, bu sırayla, javac55 sürümünü oluşturacak .class, ancak javayalnızca 52 sürümüne kadar destekleyen Java 8 JVM'yi çağıracak Java 11 derleyicisini çağırır ve Eğer yaşayacaksınız desteklenmeyen sürümünde hatalar herhangi bir program değil derlemek mümkün ve çalıştırın.) sidestep emin sadece bir Java yoluna sahip yaparak bu sorunların PATH. Siz de çalışırken, eski Java sürümlerini de kaldırabilirsiniz . Ve hem JDK'ya hem de JRE'ye sahip olmanıza gerek olmadığını unutmayın .

Eğer varsa C:\ProgramData\Oracle\Java\javapath, sıra oradan kaldıracak . Oracle , her zaman en son Java kurulumunu gösterecek sembolik bir bağlantı oluşturarak yükseltmelerden sonra kırılma Java yolları sorununu çözmeyi amaçladı . Ne yazık ki, genellikle yanlış yere işaret ediyor veya basitçe çalışmıyor . Bu girişi kaldırmak ve Java yolunu manuel olarak yönetmek daha iyidir.

Şimdi genel temizlik yapmak için iyi bir fırsat PATH. PC'nizde artık yüklü olmayan yazılımlarla ilgili yollarınız varsa, bunları kaldırabilirsiniz. Ayrıca, etraftaki yolların sırasını da karıştırabilirsiniz (böyle şeyleri önemsiyorsanız).

a ekle PATH

Şimdi üç adım önce bulduğunuz Java yolunu izleyin ve sisteme yerleştirin PATH.

Yeni yolunuzun listede nereye gittiği önemli değil; sonuna 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 olarak bir tane olmalıdır.

Burada söylenecek çok şey yok. Bunun için yolu ekleyin PATHve Tamam'ı tıklayın.

Ayarlamak JAVA_HOME

Siz oradayken, siz de ayarlayabilirsiniz JAVA_HOME. Bu, Java yolunu da içermesi gereken başka bir ortam değişkenidir. Popüler Java derleme sistemleri Maven ve Gradle dahil olmak üzere birçok Java ve Java dışı program, doğru ayarlanmadığı takdirde hata atar.

Eğer JAVA_HOMEyoksa, yeni bir sistem ortam değişkeni olarak oluşturun. Dizini olmayan Java dizininin yoluna ayarlayın bin/, ör.C:\Program Files\Java\jdkxxxx\ .

JAVA_HOMEJava'yı yükselttikten sonra da düzenlemeyi unutmayın .

Komut İstemi'ni kapatıp yeniden açın

Değiştirmiş olmanıza rağmen PATH, cmd dahil tüm çalışan programlar yalnızca eski olanları görür PATH. Bunun nedeni, tüm ortam değişkenlerinin listesinin yalnızca yürütülmeye başladığında bir programa kopyalanmasıdır; daha sonra yalnızca önbelleğe alınmış kopyaya danışır.

Cmd'nin ortam değişkenlerini yenilemenin iyi bir yolu yoktur , bu yüzden Komut İstemi'ni kapatın ve tekrar açın. Bir IDE kullanıyorsanız, onu da kapatın ve tekrar açın.

Ayrıca bakınız


7
Bu benim için çalıştı, ama önce yol dizesinin sonuna konum eklemek için çalıştı. Neden sadece başlangıçta çalışıyor?
Eric H.

4
Teşekkürler! bu benim için çalışıyor! @Eric H: Sonuna eklemek benim için işe yarıyor. Anladığım kadarıyla, soldan sağa doğru yoldan geçer ve javac.exe'yi arayın. Öyleyse belki de önündeki bazı dizinde ve javac.exe çalışmıyor.
Dao Lam

36
Komut satırını kapatıp yeniden açtığınız için +1, bu benim için çalıştı!
Sameh Deabes

Bilgisayarımda farklı jdk ve jre sürümleri varsa mantıklı geliyor mu?
Aaron Liu

Bu değişkenleri kurarken işletim sistemi hakkında birçok şey öğrendim. teşekkürler adam
Aniket Jadhav

77

bunu deneyin .. Ben de vardı ama şimdi XP'de çözüldü ..

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java

45

setKomutu yanlış yazdınız - sonra ters eğik çizgiyi kaçırdınız C:. Olmalı:

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

1
Bu hakkı kaçırdım ama buradaki kaygımı gönderirken bu benim yazım hatasıydı. Ben kontrol ettim ve her şey doğru yazıldığından ama yine de bana aynı hatayı veriyor.
user987137

1
@ user987137. Açıkçası, bir şeyler yanlış. JDK (siz - JDK değil JRE değil) belirtilen konuma kurulmuş C:\Program Files (x86)\Java\jdk1.7.0mu? Eğer öyleyse bunu yaparsanız ne olur cd C:\Program Files (x86)\Java\jdk1.7.0\bino zaman ve javac -version?
Raghuram

3
Doğru yolu ayarlamış olmama rağmen Win XP'de JDK'yı ayarlarken aynı hatayla karşılaştım. Komut istemini kapatıp tekrar açmanız sorunu çözdü.
Chris J

@ChrisJ - Bunun nedeni, yeni komut isteminin yeni bir oturumda başlatılması ve bu nedenle de güncellenmiş çevresel değişkenleri yüklemesidir.
Siklon kodu

17

Komut isteminde aşağıdakileri çalıştırın: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" veya set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

Bunu denedim ve iyi çalışıyor.


teşekkürler, bu Windows üzerinde çalıştı
Csaba

İyi cevap. Windows 10'da benim için çalıştı
Roger

5

Java komutu çalışıyorsa ve javac ile ilgili sorun yaşıyorsanız. sonra ilk önce jdk bin dizin javac.exe dosya var mı kontrol edin. Javac.exe dosyası varsa JAVA_HOME, Sistem değişkeni olarak ayarlayın .


3

Ortam değişkenlerinizi kontrol edin.

Benim durumumda Sistem değişkenlerinde ve Kullanıcı Hesabı değişkenlerimde JAVA_HOME ayarladım ve ikincisi Java'nın yanlış bir sürümüne ayarlandı . Path değişkeni ile de aynı sorunu yaşadım.

Sonra benim Kullanıcı Hesabı gelen JAVA_HOME silme Yol değişkeninden yanlış yola değişkenleri ve kaldırma doğru çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.