Ekran Kartlı Sunucu Satışları Başladı. İncele
Windows’ta Sunucu Kurulumu

Windows’ta “java is not recognized” Hatası Nasıl Çözülür?

Komut isteminde java komutu tanınmıyorsa PATH ayarı eksiktir. JAVA_HOME oluşturma, Path düzenleme ve doğrulama adımları ekran ekran.

  • 10 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • 'java' is not recognized as an internal or external command hatası, Java’nın kurulu olmadığını değil, Windows’un java.exe dosyasını Path ortam değişkeninde bulamadığını söyler.
  • Kalıcı çözüm iki adımdır: JAVA_HOME değişkenini JDK klasörüne kurun, ardından Path listesine %JAVA_HOME%\bin satırını ekleyin.
  • Ayarı yaptıktan sonra açık olan Komut İstemi pencerelerini kapatıp yeniden açın. Çalışan bir cmd penceresi ortam değişkenlerini yeniden okumaz.
  • Hızlı ve garantili geçici çözüm: start.bat içinde java yerine java.exe’nin tam yolunu yazmak. Ayrıntı için start.bat oluşturma sayfasına bakın.

Komut İstemi’nde ya da start.bat penceresinde 'java' is not recognized as an internal or external command, operable program or batch file yazıyorsa Java bozulmuş değildir. Windows, java komutunu Path ortam değişkeninde listelenen klasörlerde arar ve java.exe dosyasını hiçbirinde bulamaz. Yani sorun kurulumda değil, adres tarifinde.

Bu sayfa baştan sona Windows içindir. Aşağıda Java’nın kurulu olup olmadığını üç komutla doğrulamayı, JAVA_HOME değişkenini oluşturmayı, Path listesine %JAVA_HOME%\bin eklemeyi, birden fazla Java sürümü çakışmasını çözmeyi ve start.bat içinde tam yol yazarak sorunu tamamen atlamayı bulacaksınız.

Java Kurulu mu? Üç Komutla Kontrol#

Başlat menüsüne cmd yazıp Komut İstemi’ni açın ve şu üç komutu sırayla çalıştırın:

java -version
where java
echo %JAVA_HOME%

Çıktıları şöyle okuyun:

java -version sürüm basıyor
Java kurulu ve Path’te. Sorun başka yerde; muhtemelen sürüm uyumsuzluğu vardır.
java -version “is not recognized” diyor
Java ya kurulu değil ya da Path’te yok. Aşağıdaki adımlara devam edin.
where java hiçbir şey bulamıyor
Path içinde java.exe barındıran tek bir klasör bile yok.
where java birden fazla satır basıyor
Makinede birden fazla Java var. İlk satır kazanan sürümdür.
echo %JAVA_HOME% aynı metni geri yazıyor
Böyle bir değişken tanımlı değil demektir; oluşturmanız gerekir.

Java gerçekten kurulu mu diye gözle bakmak isterseniz Dosya Gezgini’nde C:\Program Files klasörünü açın. Eclipse Adoptium, Java, Amazon Corretto ya da Zulu adında bir klasör varsa Java kurulu demektir. C:\Program Files (x86) altındaki Java klasörleri 32 bitlik kurulumlardır; sunucu için kullanılmazlar çünkü 32 bit JVM 4 GB’ın üzerinde heap ayıramaz.

Kurulu programlar listesinden de kontrol edebilirsiniz: Denetim Masası > Programlar > Programlar ve Özellikler ekranında “Eclipse Temurin JDK with Hotspot” benzeri bir kayıt arayın. Buradaki sürüm numarası, az sonra JAVA_HOME değerine yazacağınız klasör adıyla eşleşmelidir.

BilgiMinecraft 26.1 ile birlikte sunucu jar’ı Java 25 zorunlu kılıyor. Makinenizde Java 21 kuruluysa java komutu çalışsa bile sunucu UnsupportedClassVersionError ... class file version 69.0 hatasıyla düşer. Sürüm eşleşmesini hangi Java sürümü gerekir sayfasında tablo hâlinde bulabilirsiniz.

Java Kurulu Değilse: Java 25 Kurulumu#

İndirmeniz gerekenler
  • Eclipse Temurin JDK 25Önerilen · LTS Windows x64.msiÜcretsiz
    İndir
  • Eclipse Temurin JDK 211.20.5–1.21.11 için Windows x64.msiÜcretsiz
    İndir
  • Eclipse Temurin JDK 81.16.5 ve öncesi Windows x64.msiÜcretsiz
    İndir

Bağlantılar resmî Adoptium sayfasına gider. Oracle JDK önermiyoruz; lisans onayı istiyor ve sunucu kullanımı için gereksiz bir adım ekliyor. Kurulumun ekran ekran anlatımı Windows’a Java 25 kurulumu sayfasında.

MSI kurulumunu çalıştırırken özelleştirme ekranında iki seçeneği açın: Set JAVA_HOME variable ve Add to PATH. Bu ikisini işaretlerseniz aşağıdaki manuel adımların hiçbirine gerek kalmaz. İşaretlemeyi unuttuysanız kurulumu kaldırıp yeniden yapmak yerine değişkenleri elle tanımlamak daha hızlıdır.

Minecraft sürümüGerekli JavaClass file sürümüDurum
26.1 ve sonrası (26.2 dahil)Java 2569.0Güncel
1.20.5 – 1.21.11Java 2165.0Eski hat
1.17 – 1.20.4Java 1761.0Eski hat
1.16.5 ve öncesiJava 852.0Çok eski
Minecraft sürümüne göre gereken Java sürümü ve class file karşılığı

JAVA_HOME Ortam Değişkenini Oluşturma#

  1. JDK klasörünün tam yolunu kopyalayın#

    Dosya Gezgini ile C:\Program Files\Eclipse Adoptium klasörünü açın. İçindeki jdk-25.0.4.7-hotspot benzeri klasöre girin, adres çubuğuna tıklayıp tam yolu kopyalayın. Sürüm numarası sizde farklı olabilir, uydurmayın; ekrandakini kullanın.

  2. Ortam Değişkenleri penceresini açın#

    Başlat menüsüne ortam değişkenleri yazın ve Sistem ortam değişkenlerini düzenle sonucunu açın. Alternatif yol: Denetim Masası > Sistem ve Güvenlik > Sistem > Gelişmiş Sistem Ayarları. Açılan Sistem Özellikleri penceresinde Ortam Değişkenleri düğmesine basın.

  3. Sistem değişkeni olarak ekleyin#

    Alt bölümdeki Sistem değişkenleri listesinin altında Yeni düğmesine tıklayın. Değişken adı alanına JAVA_HOME, Değişken değeri alanına kopyaladığınız yolu yazın:

    C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot
  4. Sonuna bin yazmadığınızdan emin olun#

    JAVA_HOME daima JDK’nın kök klasörünü gösterir. Değerin sonuna \bin eklerseniz Path satırı ...\bin\bin hâline gelir ve komut yine tanınmaz. Ayrıca yolun sonunda ters bölü işareti bırakmayın.

İpucuDeğişkeni Kullanıcı değişkenleri yerine Sistem değişkenleri bölümüne ekleyin. Sunucuyu ileride Windows hizmeti veya Görev Zamanlayıcı görevi olarak çalıştıracaksanız görev sizin oturumunuzda değil, SYSTEM hesabında koşar; kullanıcı değişkenlerini göremez. Bu ayrım sunucuyu Windows servisi olarak çalıştırma senaryosunda kritik hâle geliyor.

Path Listesine %JAVA_HOME%\bin Ekleme#

JAVA_HOME tek başına java komutunu çalıştırmaz; sadece JDK’nın yerini tutan bir kısayoldur. Komutun tanınması için java.exe’yi barındıran bin klasörünün Path listesinde olması gerekir.

  1. Path değişkenini düzenlemeye açın#

    Aynı Ortam Değişkenleri penceresinde Sistem değişkenleri listesinden Path satırını seçin ve Düzenle düğmesine basın. Windows 10 ve 11’de her yol ayrı bir satır olarak listelenir.

  2. Yeni satırı ekleyin#

    Yeni düğmesine tıklayıp şu değeri yazın:

    %JAVA_HOME%\bin

    Yüzde işaretlerini de yazmayı unutmayın; bu yazım JAVA_HOME değerinin yerine geçer. İleride Java sürümünü yükselttiğinizde yalnızca JAVA_HOME değerini değiştirmeniz yeter, Path’e dokunmazsınız.

  3. Satırı listenin en üstüne taşıyın#

    Yeni eklenen satır seçiliyken Yukarı Taşı düğmesine basarak listenin başına getirin. Makinede eski bir Java varsa bu adım hangi sürümün kazanacağını belirler. Ardından üç pencereyi de Tamam ile kapatın; İptal derseniz hiçbir değişiklik kaydedilmez.

Aynı işi komut satırından yapmak isterseniz, yönetici olarak açtığınız bir Komut İstemi penceresinde şu iki satırı çalıştırabilirsiniz:

setx /M JAVA_HOME "C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot"
setx /M PATH "%PATH%;%JAVA_HOME%\bin"
Dikkatsetx komutu Path değerini 1024 karakterle sınırlar ve uzun Path listeleri olan makinelerde sondaki girdileri sessizce kırpabilir. Path’i zaten kalabalık olan bir sunucuda bu komutu kullanmayın; arayüzden elle eklemek risksizdir. Ayarı bozarsanız geri almak zahmetli olur.

Komut İstemini Yeniden Açmak Neden Şart?#

Bu, en çok zaman kaybettiren ayrıntı. Windows ortam değişkenlerini süreç başlatılırken bir kez okur ve o sürecin ömrü boyunca değiştirmez. Yani ayarı kaydettiğiniz anda açık duran Komut İstemi penceresi hâlâ eski listeyi kullanır; java -version yazdığınızda yine aynı hatayı alırsınız ve ayarın işe yaramadığını sanırsınız.

Yapılacak şey basit: tüm cmd, PowerShell ve Windows Terminal pencerelerini kapatın, yeni bir tane açın. Aynı kural Dosya Gezgini’nden çift tıkladığınız start.bat için de geçerlidir; Explorer da uzun süredir açıksa yeni değişkeni görmeyebilir.

Değişiklik yeni pencerede de görünmüyorsa oturumu kapatıp yeniden açın. Windows hizmeti olarak çalışan birşey varsa onun da yeniden başlatılması gerekir.

echo %JAVA_HOME%
where java
java -version

Bu üç satır yeni pencerede sırasıyla JDK yolunu, java.exe konumunu ve sürüm bilgisini basıyorsa iş bitmiştir.

Birden Fazla Java Sürümü Çakışması#

Minecraft oynayan makinelerde bu çok olur. Oyun launcher’ı kendi Java çalışma zamanını kurar, 1.12.2 modpack’i için Java 8 kurulmuştur, sonra 26.2 sunucusu için Java 25 gelir. Path listesinde üçü birden durur ve en üstteki kazanır. Üstelik yeni kurulan sürüm otomatik olarak en üste geçmez; kurulum kendi girdisini listenin sonuna eklerse eski sürüm kazanmaya devam eder.

Hangisinin kazandığını görmek için tek komut yeter:

where java

Bu komut bulduğu tüm java.exe dosyalarını sırayla listeler. Örnek bir çıktı şöyle görünür:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe

Burada ilk satır kazanıyor, yani Java 25 kurulu olmasına rağmen eski bir Oracle javapath girdisi devrede. Çözüm için Path listesinde %JAVA_HOME%\bin satırını yukarı taşıyın ya da artık kullanmadığınız Java sürümünü Denetim Masası > Programlar ve Özellikler üzerinden kaldırın.

BilgiEski bir sürüm için Java 8’i kaldırmayın; 1.8.9 ve 1.12.2 sunucularının çalışması için gerekir. Aynı makinede birden fazla sürüm tutmanın doğru yolu, sürümleri kaldırmak değil her sunucunun start.bat dosyasında kendi java.exe yolunu göstermektir.

Kesin Çözüm: start.bat İçinde Tam Yol#

Ortam değişkeni ayarı makine genelinde çalışır ama bir gün bozulabilir: yeni bir launcher kurulur, Path’in başına başka bir satır girer ve sunucunuz sessizce yanlış Java ile açılmaya başlar. Üretim sunucularında bu riski hiç almayın, java.exe’yi tam yoluyla çağırın.

@echo off
title Minecraft Server - Paper 26.2
cd /d C:\minecraft\server

set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe"
set MEM=-Xms6G -Xmx6G

%JAVA% %MEM% -jar paper.jar nogui
pause

Yol boşluk içerdiği için tırnak zorunludur. Bu yazımda Path ne olursa olsun sunucu daima gösterdiğiniz Java ile açılır. Aynı makinede biri 1.12.2 (Java 8), diğeri 26.2 (Java 25) çalışan iki sunucu tutuyorsanız zaten tek doğru yöntem budur; her sunucunun start.bat dosyası kendi Java sürümünü gösterir ve ikisi birbirine karışmaz.

Java sürümünü yükselttiğinizde bu satırı güncellemeniz gerekeceğini unutmayın. Yeni JDK farklı bir klasöre kurulduğu için eski yol geçersiz kalır ve sunucu The system cannot find the path specified diyerek açılmaz. Yükseltmelerden sonra C:\Program Files\Eclipse Adoptium klasörünü açıp yeni klasör adını kopyalayın.

Bat dosyasının tamamını, RAM ve bayrak ayarlarıyla birlikte start.bat oluşturma sayfasında bulabilirsiniz. Dosya çalıştırıldığında pencere hemen kapanıyorsa start.bat açılıp kapanıyor sayfasındaki teşhis tablosuna bakın.

Hizmet ve Görev Senaryosunda Java Yolu#

Bu bölüm, sunucusunu masaüstünden elle açan kullanıcıları ilgilendirmiyor. Ama Minecraft’ı Windows hizmeti ya da Görev Zamanlayıcı görevi olarak çalıştırıyorsanız burada bambaşka bir tuzak var.

Görevler ve hizmetler sizin oturumunuzda çalışmaz. Genellikle SYSTEM hesabında ya da özel bir hizmet hesabında koşarlar. O hesap sizin Kullanıcı değişkenleri bölümüne eklediğiniz JAVA_HOME ve Path girdilerini göremez. Sonuç, masaüstünde sorunsuz açılan bir sunucunun hizmet olarak çalıştırıldığında “java is not recognized” demesidir.

İki şeyi birden yaparsanız bu senaryoda hiç sorun yaşamazsınız:

  • JAVA_HOME ve %JAVA_HOME%\bin girdilerini Sistem değişkenleri bölümüne ekleyin, kullanıcı bölümüne değil.
  • bat dosyasında java.exe’yi yukarıdaki gibi tam yoluyla çağırın; böylece ortam değişkenine hiç ihtiyaç kalmaz.

Ortam değişkenlerini değiştirdikten sonra ilgili hizmeti yeniden başlatmayı unutmayın. Hizmetler de tıpkı cmd pencereleri gibi ortam listesini başlangıçta bir kez okur; siz değişkeni eklesiniz bile çalışan hizmet eski listeyle devam eder. Sunucuyu bu şekilde çalıştırmayı düşünüyorsanız Görev Zamanlayıcı ile otomatik başlatma sayfasındaki hesap seçimi bölümünü de okuyun.

DikkatAynı tuzak zamanlanmış yedekleme ve yeniden başlatma betiklerinde de geçerlidir. Elle çalıştırdığınızda sorunsuz işleyen bir bat dosyası, görev olarak çalıştırıldığında sessizce başarısız olabilir. Bu tür betiklerde java, jar ve klasör yollarının tamamını tam yol olarak yazmak en güvenli alışkanlıktır.

Hâlâ Çalışmıyorsa: Kontrol Listesi#

BelirtiOlası sebepÇözüm
Ayar yapıldı, komut hâlâ tanınmıyor cmd penceresi eski değişken listesini kullanıyor Tüm pencereleri kapatıp yeniden açın, gerekirse oturumu kapatın
echo %JAVA_HOME% boş dönüyor Değişken kullanıcı bölümüne eklenmiş veya kaydedilmemiş Sistem değişkenleri bölümüne ekleyip pencereleri Tamam ile kapatın
Path’te ...\bin\bin görünüyor JAVA_HOME değerine \bin eklenmiş JAVA_HOME değerini JDK kök klasörüyle sınırlayın
Yanlış sürüm açılıyor Path’te başka bir Java girdisi daha üstte where java ile sırayı görün, satırı yukarı taşıyın
class file version 69.0 hatası Java 21 çalışıyor, jar Java 25 istiyor Java 25 kurun; sürüm hatası çözümü
Hizmet olarak çalışırken tanınmıyor SYSTEM hesabı kullanıcı değişkenlerini görmüyor Değişkenleri sistem düzeyinde tanımlayın veya tam yol kullanın
java komutu tanınmama sorununda belirti, sebep ve çözüm eşleşmesi

Bir de şu var: kurumsal makinelerde grup ilkesi Path değişikliklerini oturum açıldığında geri alabiliyor. Kendi VDS’nizde bu ihtimal düşüktür, ancak şirket bilgisayarında sunucu kuruyorsanız değişkenin sonraki açılışta hala yerinde durup durmadığını kontrol edin.

Sunucu kurulumunun tamamını sıfırdan yapmak isterseniz Windows’ta Minecraft sunucu kurulumu rehberi tüm adımları sırayla veriyor. Java, jar ve RAM ayarları hazır gelen bir ortam tercih ederseniz Batihost’un Minecraft sunucu paketleri Ryzen 9 işlemci ve NVMe SSD üzerinde 8 GB RAM’den başlıyor.

Özetle#

“java is not recognized” hatası bir kurulum hatası değil, bir yol tarifi hatasıdır. Sırayla şunu yapın: java -version ve where java ile durumu görün, gerekiyorsa Eclipse Temurin JDK 25 kurun, JAVA_HOME değişkenini JDK kök klasörüne ayarlayın, Path listesine %JAVA_HOME%\bin ekleyin ve en üste taşıyın.

Sonra da en çok atlanan adımı atlamayın: açık Komut İstemi pencerelerini kapatıp yeniden açın. Değişkenler yalnızca yeni açılan süreçlerde geçerli olur.

Uzun vadede en dayanıklı çözüm start.bat içinde java.exe’yi tam yoluyla çağırmaktır; makineye kaç Java kurulursa kurulsun sunucunuz doğru sürümle açılır. Takıldığınız noktada where java çıktısını ekleyerek destek talebi açabilirsiniz.

Sıkça Sorulan Sorular#

“java is not recognized” hatası ne anlama geliyor?

Windows, yazdığınız java komutunu Path ortam değişkenindeki klasörlerde arar ve java.exe dosyasını hiçbirinde bulamaz. Java kurulu olmayabilir, ya da kurulu olduğu hâlde kurulum Path’e eklenmemiştir. Hata Java’nın bozuk olduğunu göstermez; sadece Windows’un onu nerede arayacağını bilmediğini gösterir.

JAVA_HOME nasıl oluşturulur?

Başlat menüsüne ortam değişkenleri yazıp Sistem ortam değişkenlerini düzenle sonucunu açın. Ortam Değişkenleri düğmesine basın, Sistem değişkenleri bölümünde Yeni deyin. Değişken adı JAVA_HOME, değeri JDK klasörünün kendisi olmalıdır: C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot. Sonuna \bin yazmayın.

JAVA_HOME değerinin sonuna bin yazmalı mıyım?

Hayır. JAVA_HOME daima JDK’nın kök klasörünü gösterir, bin alt klasörünü değil. bin yalnızca Path satırında kullanılır: %JAVA_HOME%\bin. Sonuna bin ekleyen kurulumlarda Path ...\bin\bin hâline gelir ve java komutu yine tanınmaz.

Ayarı yaptım ama java komutu hâlâ tanınmıyor, neden?

Neredeyse her zaman açık olan Komut İstemi penceresi yüzünden. Windows ortam değişkenlerini süreç başlarken okur; siz değişkeni kaydetseniz bile çalışan pencere eski listeyi kullanmaya devam eder. Tüm cmd ve PowerShell pencerelerini kapatıp yenisini açın. Değişiklik yine görünmezse oturumu kapatıp açın.

Makinede birden fazla Java sürümü varsa ne olur?

Path listesinde en üstte duran klasör kazanır. Eski bir oyun launcher’ı ya da 1.12.2 sunucusu için kurduğunuz Java 8, Java 25’in önüne geçmiş olabilir. where java komutu bulunan tüm java.exe dosyalarını sırayla listeler; ilk satır o an çalışan sürümdür.

Minecraft sunucusu için hangi Java sürümü gerekiyor?

Minecraft 26.1 ve sonrası Java 25 zorunlu kılar; güncel kararlı sürüm 26.2 “Chaos Cubed” de Java 25 ister. 1.20.5–1.21.11 aralığı Java 21, 1.17–1.20.4 aralığı Java 17, 1.16.5 ve öncesi Java 8 ile çalışır. Sunucu için Eclipse Temurin JDK 25 önerilir; Java 26 çıktı ancak LTS değildir.

Path ayarını hiç kurcalamadan sunucuyu çalıştırabilir miyim?

Evet. start.bat içinde java yazmak yerine java.exe’nin tam yolunu tırnak içinde verin: set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe". Bu yöntem makinede kaç Java sürümü olursa olsun hangisinin çalışacağını kesinleştirir ve üretim sunucularında zaten tercih edilen yöntemdir.

JRE mi JDK mi kurmalıyım?

Sunucu çalıştırmak için JRE yeterlidir, ancak JDK kurmanızı öneririz. JDK içinde jcmd, jstack ve jmap gibi teşhis araçları gelir; sunucu takıldığında thread dump almak veya bellek kullanımını incelemek bu araçlarla mümkün olur. Boyut farkı birkaç yüz megabayttır, pratikte önemsizdir.

Windows’ta Sunucu Kurulumu — Tüm Rehberler#

  1. Windows’ta Minecraft Sunucu Kurulumu: Tam Rehber
  2. Windows’a Java 25 Kurulumu ve JAVA_HOME Ayarı
  3. Minecraft start.bat Dosyası Oluşturma ve RAM Ayarları
  4. Windows’ta Paper Minecraft Sunucusu Kurulumu
  5. Windows’ta BuildTools ile Spigot Sunucu Kurulumu
  6. Windows’ta Forge Modlu Minecraft Sunucusu Kurulumu
  7. Windows’ta Fabric Minecraft Sunucusu Kurulumu
  8. Windows VDS Üzerine Uzak Masaüstüyle Minecraft Sunucusu Kurma
  9. Windows Güvenlik Duvarında Minecraft Portu Açma (25565)
  10. Minecraft Sunucusunu Windows Servisi Olarak 7/24 Çalıştırma
  11. Windows’ta Minecraft Bedrock Dedicated Server Kurulumu
  12. Windows Server’da Minecraft Sunucu Optimizasyonu
  13. Minecraft start.bat Açılıp Hemen Kapanıyor
  14. Windows’ta “java is not recognized” Hatası Nasıl Çözülür?
  15. Windows Görev Zamanlayıcı ile Minecraft Sunucusunu Otomatik Başlatma
  16. Windows’ta Minecraft Sunucusuna Nasıl RAM Verilir?

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön