Berk Akademi
Ana Sayfa
ÖZEL KODLAMA DERSLERİ
Yazılım Özel Ders
Tüm birebir programlara genel bakış
Python Yazılım Kursu
Sıfırdan ileri seviyeye birebir Python
Java Yazılım Kursu
OOP odaklı birebir Java eğitimi
AP Computer Science Principles
AP CSP sınav hazırlığı
GRUP DERSLERİ
Python & Django Masterclass
SINIRLI KONTENJAN
Java & Spring Boot Masterclass
SINIRLI KONTENJAN
C# .NET Masterclass
SINIRLI KONTENJAN
VİDEO DERSLER
Sıfırdan Temel Python Kursu
Kendi Hızında Öğren
ÜCRETSİZ
Seviye Testi
Ücretsiz — Python, Java, algoritma seviye testleri
Kariyerini Keşfet
Sertifika Doğrula
Belge numarası ve soyad ile doğrulama

Java Projesi Neden Çalışmaz? JDK, IDE, PATH ve Build Sorunlarını Ayırt Etme

java-projesi-neden-calismiyor-jdk-ide-path-build-sorunlari
Bu yazıda neler var?
  1. Java projesi çalışmadığında hangi sırayı izlemelisiniz?
  2. JDK ve JRE farkı: Derlemek ile çalıştırmak neden aynı değildir?
  3. Terminalde java ve javac komutlarını karşılaştırın
  4. IntelliJ IDEA ve Eclipse proje SDK ayarlarını kontrol edin
  5. PATH, JAVA_HOME ve build dosyasını birlikte inceleyin
  6. Hata mesajını doğru katmanla eşleştirin
  7. Java projesi için adım adım teşhis kontrol listesi
  8. Sık Sorulan Sorular

Java proje çalışmıyor sorununun tek bir nedeni yoktur; hata çoğunlukla JDK, IDE’nin proje SDK ayarı, terminalin kullandığı PATH/JAVA_HOME yapılandırması veya Maven ve Gradle gibi build araçlarının seçtiği Java ortamından kaynaklanır. En hızlı teşhis yöntemi, dış ortamdan proje ayarlarına doğru ilerlemek ve her katmanı ayrı ayrı doğrulamaktır.

Bir komutun çalışması bütün yapılandırmanın doğru olduğunu göstermez. Örneğin terminalde java komutunun bulunması, javac derleyicisinin de bulunduğunu veya IntelliJ IDEA ile Eclipse’in aynı JDK’yı kullandığını kanıtlamaz.

Java projesi çalışmadığında hangi sırayı izlemelisiniz?

Rastgele ayar değiştirmek yerine aşağıdaki dört katmanı sırayla kontrol edin. Böylece bir IDE sorununu PATH hatası sanmak veya çalışan JDK kurulumunu gereksiz yere kaldırmak gibi zaman kaybettiren işlemlerden kaçınabilirsiniz.

  1. JDK kurulumu: Terminalde hem java hem de javac komutlarının çalıştığını doğrulayın. Bu kontrol, işletim sisteminin çalıştırıcıya ve derleyiciye erişebildiğini gösterir; projenin doğru SDK ile yapılandırıldığını göstermez.
  2. IDE proje SDK’sı: IntelliJ IDEA veya Eclipse içinde projeye atanmış JDK’yı inceleyin. IDE’nin bir JDK görmesi, terminaldeki PATH ayarının doğru olduğu anlamına gelmez.
  3. PATH ve JAVA_HOME: Terminalin hangi java ve javac dosyalarını çalıştırdığını bulun. Değişkenlerin tanımlı olması tek başına yeterli değildir; eski veya farklı bir kurulum klasörünü gösterebilirler.
  4. Build yapılandırması: Maven ya da Gradle’ın kullandığı JDK ile IDE ve terminal ortamını karşılaştırın. Build işleminin tamamlanması, uygulamanın sınıf yolu veya çalışma zamanı yapılandırmasının kesinlikle doğru olduğunu kanıtlamaz.

Bu sıra sorunu daraltır: Önce Java araçlarının bilgisayarda erişilebilir olup olmadığını, ardından geliştirme ortamının ve projenin hangi araçları seçtiğini incelersiniz. Bir katman doğrulanmadan sonraki katmandaki seçenekleri değiştirmek, asıl hatayı görünmez hâle getirebilir.

JDK ve JRE farkı: Derlemek ile çalıştırmak neden aynı değildir?

JDK ve JRE farkı: Derlemek ile çalıştırmak neden aynı değildir?

JRE terimi, Java uygulamalarını çalıştırmak için gereken çalışma ortamını; JDK ise çalışma bileşenlerine ek olarak derleyici ve diğer geliştirme araçlarını içeren geliştirme kitini anlatır. Modern JDK kurulumları çalışma zamanı bileşenlerini de içerdiğinden, Java ile kod geliştiren bir bilgisayarda temel kontrol JDK üzerinden yapılır. Oracle belgelerine göre javac, Java kaynak dosyalarını JVM üzerinde çalışabilecek .class dosyalarına derler; java komutu ise JVM’yi başlatıp belirtilen sınıfın main metodunu çağırır. ([docs.oracle.com](https://docs.oracle.com/en/java/javase/26/docs/specs/man/javac.html?utm_source=openai))

Örneğin aynı klasörde Main.java adlı bir dosya oluşturun:

public class Main {
    public static void main(String[] args) {
        String durum = "Java çalışıyor";
        System.out.println(durum);
    }
}

Önce kaynak kodu derleyin, ardından oluşan sınıfı çalıştırın:

javac Main.java
java Main

javac Main.java başarılı olduğunda aynı klasörde Main.class oluşur. İkinci komutta dosya uzantısı yazılmaz; java Main ifadesi çalıştırılacak sınıfın adını belirtir. Beklenen çıktı şöyledir:

Java çalışıyor

java çalışırken javac bulunamıyorsa bilgisayar bazı Java uygulamalarını çalıştırabilir, ancak kaynak kodu derlemek için gereken geliştirme aracı terminal tarafından bulunamıyor olabilir. Derleme ve çalıştırma ayrımını uygulamalı biçimde pekiştirmek isteyen öğrenciler, birebir Java özel ders sürecinde kurulumdan hata ayıklamaya kadar kendi geliştirme ortamları üzerinden ilerleyebilir.

Terminalde java ve javac komutlarını karşılaştırın

İlk karşılaştırmayı aynı terminal penceresinde yapın. java -version çalışma komutunun, javac -version ise derleyicinin erişilebilirliğini ve kullandığı sürümü gösterir. Çıktıların sayılarını ezberlemek yerine iki komutun da çalışıp çalışmadığına ve aynı JDK ailesini işaret edip etmediğine bakın. Her iki komutta da -version seçeneği desteklenir. ([docs.oracle.com](https://docs.oracle.com/en/java/javase/22/docs/specs/man/java.html?utm_source=openai))

java -version
javac -version
Terminal sonucu Muhtemel katman İlk yorum
Yalnızca java çalışıyor JDK veya PATH Çalıştırıcı bulunuyor, ancak derleyici bulunamıyor ya da farklı bir kurulum seçiliyor.
Yalnızca javac çalışıyor PATH tutarsızlığı Komut yolları ayrı yapılandırılmış veya terminal beklenmeyen bir dosyayı seçiyor olabilir.
İki komut da çalışmıyor Kurulum veya PATH JDK erişilebilir değildir; önce kurulum ve komut yolları kontrol edilmelidir.

Komutların gerçekte hangi dosyadan çalıştırıldığını Windows’ta where java ve where javac, macOS veya Linux’ta which java ve which javac ile inceleyebilirsiniz. Windows’taki where komutu varsayılan olarak geçerli klasörü ve PATH içindeki konumları arar. Birden fazla yol görünüyorsa ilk sıradaki kayıt terminalin seçtiği Java kurulumunu etkileyebilir. ([learn.microsoft.com](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/where?utm_source=openai))

where java
where javac

which java
which javac

java ile javac farklı JDK klasörlerine gidiyorsa henüz proje koduna odaklanmayın. Önce komut yollarını aynı kurulum altında tutarlı hâle getirin; ardından terminali kapatıp yeniden açarak sürüm ve yol kontrollerini tekrarlayın.

IntelliJ IDEA ve Eclipse proje SDK ayarlarını kontrol edin

IDE içinde çalışan bir proje terminalde başarısız oluyorsa veya bunun tersi yaşanıyorsa, sorun çoğunlukla koddan değil farklı Java kurulumlarının kullanılmasından kaynaklanır. IntelliJ IDEA’da önce IntelliJ IDEA proje yapısı belgelerinde açıklanan File > Project Structure ekranını açın. Project bölümündeki Project SDK’yı, ardından Modules > Dependencies altındaki Module SDK’yı kontrol edin. Modülün farklı bir JDK kullanması, proje genelindeki seçimi etkisiz bırakabilir.

Ardından Run > Edit Configurations yolunu izleyin. Çalıştırılan ana sınıfın doğru olduğundan, Use classpath of module alanında ilgili modülün seçildiğinden ve JRE alanının beklediğiniz JDK’yı gösterdiğinden emin olun. Kod editörde hatasız görünse bile yanlış modül classpath’i veya farklı çalışma zamanı seçimi uygulamanın başlamasını engelleyebilir.

Eclipse’te kontrol üç katmanlıdır: çalışma alanındaki Java kurulumları için Java > Installed JREs, projenin kütüphane seçimi için Project > Properties > Java Build Path > Libraries > JRE System Library, dil uyumluluğu için ise Project > Properties > Java Compiler. Ayrıca Run > Run Configurations > Java Application > JRE sekmesindeki çalışma zamanı seçimi proje ayarını geçersiz kılabilir.

Örneğin terminaldeki javac yeni bir dil özelliğini kabul ederken IDE kırmızı hata gösterebilir. Bu durumda terminal PATH üzerinden bir JDK’ya, IDE ise eski veya farklı bir JDK’ya bakıyor olabilir. Ayarları eşitledikten sonra temel kavramlardaki olası eksikleri ayırmak için Java bilgi testiyle mevcut seviyenizi ölçebilirsiniz; böylece ortam hatası ile Java bilgisi eksikliği birbirine karışmaz.

PATH, JAVA_HOME ve build dosyasını birlikte inceleyin

PATH, JAVA_HOME ve build dosyasını birlikte inceleyin

PATH, terminalde java ve javac yazıldığında hangi çalıştırılabilir dosyanın bulunacağını belirler. JAVA_HOME ise Maven ve Gradle gibi sektörel build araçlarının varsayılan olarak başvurabileceği JDK dizinini belirtir. PATH içindeki Java konumu ile JAVA_HOME farklı kurulumları gösteriyorsa terminalde derleme, test ve paketleme işlemleri farklı sonuç verebilir.

Ancak yalnızca ortam değişkenlerini düzeltmek yeterli olmayabilir. Maven projesinde pom.xml içindeki maven.compiler.source, maven.compiler.target ve özellikle maven.compiler.release ayarlarını inceleyin. source kaynak kodda kullanılabilecek dil özelliklerini, target üretilecek bytecode seviyesini sınırlar. release ise hedeflenen Java sürümünün dil, bytecode ve standart API sınırlarını birlikte uygulamak için daha güvenli bir seçimdir.

Gradle tarafında build.gradle veya build.gradle.kts içindeki sourceCompatibility, targetCompatibility, options.release ve Java toolchain yapılandırmasını karşılaştırın. Gradle Java toolchains belgelerine göre toolchain derleme ve çalıştırma görevlerinde kullanılacak JDK’yı proje düzeyinde seçebilir; release ise kodun daha yeni API’leri yanlışlıkla kullanmasını sınırlar.

Buradaki temel ayrım şudur: IDE SDK’sı editörün ve IDE içi derlemenin davranışını, JAVA_HOME build aracının başlatılmasını, build dosyası ise projenin hedefini etkileyebilir. “Release version not supported”, “invalid target release” veya “unsupported class file” benzeri mesajlar gördüğünüzde bu katmanların aynı Java hedefinde buluşup buluşmadığını kontrol edin.

Hata mesajını doğru katmanla eşleştirin

Hata metninin tamamına bakmak, rastgele JDK kaldırıp kurmaktan daha hızlıdır. Aynı “proje çalışmıyor” şikâyeti derleyicinin bulunamamasından, bağımlılığın build classpath’ine eklenmemesinden veya çalışma zamanında sınıfın yüklenememesinden doğabilir.

Hata mesajı En olası katman İlk kontrol Açıklama
javac bulunamadı JDK ve PATH javac -version komutu ve PATH sırası JDK kurulu olmayabilir veya terminal yalnızca başka bir Java dizinine bakıyor olabilir.
package does not exist Build ve classpath Bağımlılıklar, source root ve paket bildirimi Gerekli kütüphane derleme classpath’inde olmayabilir; dosya yanlış kaynak klasöründe de bulunabilir.
ClassNotFoundException Çalışma zamanı Run Configuration ve runtime classpath Kod derlenmiş olsa bile JVM çalıştırma sırasında istenen sınıfı classpath üzerinde bulamamıştır.

Derleme hatası ile çalışma zamanı hatasını ayırın. package does not exist genellikle derleme aşamasında görülürken ClassNotFoundException, uygulama başladıktan sonra bir sınıf yüklenmeye çalışıldığında ortaya çıkar. Bu ayrım, kontrolü JDK kurulumuna mı, build bağımlılıklarına mı yoksa Run Configuration ayarına mı yönelteceğinizi belirler.

Java projesi için adım adım teşhis kontrol listesi

Java projesi çalışmadığında önce hatanın tamamını kaydedin; yalnızca son satıra bakmak, asıl nedeni gizleyebilir. Ardından aşağıdaki sırayı izleyin. Her adımda sorunun çözülüp çözülmediğini yeniden test edin.

  1. Tam hata metnini saklayın: Komut satırı çıktısını, IDE konsolunu ve çalıştırdığınız komutu birlikte not edin.
  2. Sürümleri karşılaştırın: java -version ve javac -version komutlarını ayrı ayrı çalıştırın. Komutlardan biri bulunamıyorsa JDK kurulumu veya PATH katmanını inceleyin.
  3. Komut yollarını kontrol edin: Windows’ta where java ve where javac, macOS/Linux’ta which java ve which javac kullanın. Beklenmeyen bir klasör görünüyorsa birden fazla Java kurulumu çakışıyor olabilir.
  4. IDE SDK ayarını doğrulayın: IntelliJ IDEA’da proje ve modül SDK’sını, Eclipse’te Installed JREs ve proje derleyici ayarını kontrol edin. IDE ile terminal aynı JDK’yı kullanmayabilir.
  5. JAVA_HOME ve PATH’i inceleyin: JAVA_HOME JDK’nın kök klasörünü göstermeli; PATH içinde de ilgili çalıştırılabilir dosya yolu bulunmalıdır.
  6. Build dosyasını kontrol edin: Maven için pom.xml, Gradle için build.gradle veya ilgili yapılandırmada Java sürümü, eklentiler ve bağımlılıkların birbiriyle uyumlu olduğundan emin olun.
  7. Temiz derleme yapın: Eski çıktıları silip yeniden derleyin. Maven ve Gradle burada yalnızca build araçlarıdır; hata devam ederse bağımlılık ağacını ve derleyici çıktısını ayrıca inceleyin.
  8. Çalışma dizini ve classpath’i test edin: Programın beklediği dosyaların doğru klasörde olduğuna, package yapısının klasörlerle eşleştiğine ve çalışma komutunun doğru classpath kullandığına bakın.
Belirti Öncelikli katman İlk kontrol
javac bulunamıyor JDK ve PATH Komut yolu, JAVA_HOME
IDE derliyor, terminal derlemiyor IDE-terminal JDK farkı SDK ve sürüm yolları
Derleniyor, çalışırken sınıf bulunamıyor Çalışma dizini ve classpath package yapısı ve çalıştırma komutu

Temel kavramları kendi hızında pekiştirmek isteyenler, örnekleri tekrar tekrar çalıştırabilecekleri video eğitimleri ile aynı kontrol sırasını farklı projelerde uygulayabilir.

Sık Sorulan Sorular

java -version çalışıyor ama javac -version çalışmıyorsa hangi katmanı kontrol etmeliyim?

Öncelikle JDK’nın kurulu olup olmadığını ve PATH’in JDK içindeki çalıştırılabilir dosya klasörünü gösterip göstermediğini kontrol edin. java komutu tek başına çalışsa da bu, javac komutunun erişilebilir olduğu anlamına gelmez.

IntelliJ IDEA veya Eclipse’in terminalden farklı bir JDK kullandığını nasıl anlarım?

IDE içindeki proje SDK yolunu, terminaldeki where veya which çıktısıyla karşılaştırın. Sürüm veya klasör farklıysa iki ortam aynı JDK’yı kullanmıyordur.

PATH doğru olduğu hâlde Maven veya Gradle projesi neden derlenmeyebilir?

Build dosyası farklı bir Java sürümü isteyebilir, bağımlılık çözülemeyebilir veya eklenti yapılandırması hatalı olabilir. Bu durumda ayrıntılı build çıktısını ve proje yapılandırmasını inceleyin.

package does not exist ile ClassNotFoundException arasındaki fark nedir?

package does not exist genellikle derleme sırasında gerekli paketin veya bağımlılığın bulunamadığını gösterir. ClassNotFoundException ise program çalışırken sınıfın classpath üzerinde bulunamadığına işaret eder.

Derleme başarılı olduğu hâlde Java programı neden çalıştırılamaz?

Yanlış çalışma dizini, hatalı classpath, package-sınıf adı uyuşmazlığı veya eksik çalışma zamanı bağımlılığı buna neden olabilir. Derleme komutundan farklı olarak çalıştırma komutunun hangi sınıf ve klasörleri kullandığını ayrıca doğrulayın.

Java sorunlarını rastgele ayar değiştirerek değil, hatayı doğru katmanla eşleştirerek çözmek daha hızlı ve güvenlidir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin — Yazılım Geliştirici ve Eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; bugün öğrencinin seviyesine ve hedefine göre şekillenen sürdürülebilir öğrenme sistemleri tasarlıyor. 500'den fazla kişiye ezber değil, düşünerek kod yazmayı öğretti — Berk Akademi'de izlemeye değil üretmeye dayalı öğrenme kültürünü o kuruyor.

WhatsApp Hemen Ara