Düzeltme: Ana sınıf bulunamadı ya da yüklenemedi

Terminalde sınıf adını belirterek bir Java programını başlatmak için komut isteminde bir java komutu kullanıldığında ' Ana sınıf bulunamadı ya da yüklenemedi ' hatası oluşuyor . Bunun olmasının nedeni, çoğunlukla sınıfı bildirirken kullanıcının programlama hatası nedeniyledir.

Ana sınıf-Java komut satırı bulunamadı ya da yüklenemedi

Daha önce de belirtildiği gibi, bu hata çoğunlukla sistemle ilgili değildir ve kullanıcı, aşağıda gösterildiği gibi birkaç senaryoda hata yapar. İlerlemeden önce, Java programlama dili ve nasıl çalıştığı hakkında temel bir bilginiz olduğunu varsayıyoruz.

Java'da 'Ana sınıf bulunamadı ya da yüklenemedi' hatasına neden olan nedir?

'Ana sınıf bulunamadı ya da yüklenemedi' mesajı, Java motorunun sınıfı çalıştırmak için sınıfı alan ilk adımının başarısız olduğu anlamına gelir. Java komutu sınıfı doğru dizinde bulamadı .

Bazı durumlarda, doğru dosya yolunu eklemeniz ve Java terminalini doğru konuma yönlendirmeniz gerekir. Komutu komut satırı terminalinden yürüttüğünüz için, bilgisayar sınıfın nerede bulunacağını veya nerede olduğunu bilmiyor. Hedeflenen IDE'lerde, IDE mevcut çalışma dizinini gösteren bir işaretçi tuttuğu için sorun bu değildir.

'Java' sözdizimi nedir?

Çalıştırmaya çalışırken terminalin neden bize bir hata verdiğini gidermeye başlamadan önce, önce komutun sözdizimine bakmamız gerekir. Doğru sözdizimini kullanmıyorsanız, kaçınılmaz olarak bu hatayı göreceksiniz.

Komutun normal sözdizimi şöyledir:

 java [...] [...] 

İşte bir komut satırı seçeneği, tam bir Java sınıfı adı ve tüm paket derlendiğinde uygulamanıza iletilen bir komut satırı argümanıdır.

Geçerli bir komut örneği:

 java -Xmx100m com.acme.example.ListUygulamaları kevin oklar bart 

Yukarıdaki komut java komutunun aşağıdaki işlemleri yapmasını sağlar:

  • ' Com.acme.example.ListAppuals ' sınıfının derlenmiş bir versiyonunu arayacaktır.
  • Aradıktan sonra sınıfı yükler.
  • Daha sonra, sınıf yüklendiğinde, sınıf geçerli bir imza, değiştiriciler ve dönüş tipi olan bir 'ana' yöntem için aranacaktır. Örnek bir ana sınıf şöyle bir şey olurdu:
 genel statik boşluk ana (Dize []) 
  • Metot 'kevin', 'oklar' ve 'bart' argümanları ile string [] olarak adlandırılacaktır.

'Ana sınıf bulunamadı ya da yüklenemedi' nasıl düzeltilir

1. Çözüm: Sınıf ismi bağımsız değişkenini kontrol etme

Kullanıcıların yaptığı en yaygın hata, bağımsız değişken olarak yanlış bir sınıf adı sağlamalarıdır (veya doğru bir sınıf adı yanlış bir formdur). Parametreleri komut satırında ilan ettiğimizden, sınıf adı argümanını yanlış bir biçimde iletmeniz muhtemeldir. Burada, hata yapabileceğiniz tüm olası senaryoları listeleyeceğiz.

  • Basit bir sınıf ismi yazmak . Sınıfı 'com.acme.example' gibi bir pakette bildirirseniz, Java komutundaki paketi içeren tam sınıf adını kullanmanız gerekir.
 java com.acme.example.ListAppuals 

yerine

 java ListeUygulamaları 
  • Bir dosya adı veya yol adı bildirmek yerine bir sınıf adı bildirmelisiniz. Bunun için bir yol adı / dosya adı bildirirseniz, Java sınıfı almaz. Yanlış girişler şunları içerir:
 java ListAppuals.class java com / acme / example / ListAppuals.class tarafından 
  • Muhafaza dikkate alınmalıdır. Java komutları büyük / küçük harf duyarlıdır ve bir harften bile hata yaparsanız, ana sınıfı yükleyemezsiniz. Yanlış hatalara bir örnek:
 java com.acme.example.listappuals 
  • Bir kaynak dosya adı bildirmemelisiniz. Daha önce de belirtildiği gibi, sınıfı yalnızca doğru tam sınıf adı biçiminde bildirmeniz gerekir. Bir hata örneği:
 java ListAppuals.java 
  • Bu hata, bir yazım hatası yaparsanız veya sınıf adını tamamen yazmayı unutursanız da ortaya çıkar.

Sınıf adını bildirirken özensiz bir hata yaptıysanız, düzeltdiğinizden emin olun ve ardından programı başlatmayı deneyin.

2. Çözüm: Sınıf yolunu kontrol etme

Sınıf adını doğru olarak beyan ettiyseniz ancak hala hata gösteriliyorsa, java komutunun belirtilen sınıf adını yolda bulamaması ihtimali vardır. Sınıf yolu, Java çalışma zamanının kaynak ve sınıf dosyalarını aradığı bir yoldur. Sınıf yolunu aşağıda gösterildiği gibi iki farklı komut kullanarak kolayca ayarlayabilirsiniz:

 C:> sdkTool-classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ... 

Sınıf yolu hakkında daha fazla bilgi edinmek için aşağıdaki belgeleri kontrol etmelisiniz.

Java komut belgeleri

Sınıf yolunu ayarlama

3. Çözüm: Dizini kontrol etme

Bir dizini sınıf yolu olarak bildirdiğinizde, daima isim alanının kök dizinine karşılık gelir. Örneğin, “/ usr / local / acme / classes” sınıf yolundaysa, Java “com.acme.example.Appuals” sınıfını arayacaktır. Aşağıdaki yol adı ile bir sınıf arayacaktır:

 /usr/local/acme/classes/com/acme/example/Appuals.class 

Dolayısıyla, özünde, eğer aşağıdaki adresi sınıf yoluna koyarsanız, Java sınıfı bulamayacaktır:

 / Usr / local / Acme / sınıfları / com / Acme / example 

Ayrıca alt dizininizi de kontrol etmeli ve FQN ile eşleşip eşleşmediğini kontrol etmelisiniz. Sınıflarınız FQN “com.acme.example.Appuals” ise, Java “com / acme / example” dizininde bir “Appuals.class” arayacaktır.

Size bir örnek vermek gerekirse, aşağıdaki senaryoyu varsayalım:

  • Çalıştırmak istediğiniz sınıf: com.acme.example.Appuals
  • Tam dosya yolu : /usr/local/acme/classes/com/acme/example/Appuals.class
  • Geçerli çalışma dizini : / usr / local / acme / classes / com / acme / example /

Sonra aşağıdaki senaryolar geçerli olurdu:

 # yanlış, FQN gerekli java Appuals # wrong, mevcut çalışma dizininde java com.acme.example.Appuals # yanlış, yukarıdaki senaryo java -classpath'a benzer şekilde, `com / acme / example` klasörü bulunmuyor. com.acme.example.Appuals # OK; göreceli bir sınıf yolu java -classpath ../../ .. com.acme.example.Appuals # OK; mutlak bir sınıf yolu java -classpath / usr / local / acme / classes com.acme.example.Appuals olarak ayarlanır. 

Not: Sınıf yolu, uygulamalarınızın ihtiyaç duyduğu tüm diğer sınıfları (sistem dışı) da içermelidir.

4. Çözüm: Sınıf paketini kontrol etme

Yukarıdaki tüm çözümler sizin durumunuzda geçerliyse, kaynak kodunuzun doğru klasöre yerleştirildiğinden emin olmanız gerekir. Ayrıca, paketi doğru olarak beyan ettiniz. Kodunuzu bir IDE ile çalıştırırsanız, muhtemelen sizi bu konuda bilgilendirecektir. Ancak, bizim durumumuzda, komut isteminde çalıştırdığımız için, hata fark edilmeyecek ve sınıf hatası tartışılmaya başlanacaktır.

Ilginç Haberler