Düzeltme: Ana sınıf bulunamadı veya 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ı veya yüklenemedi ' hatası oluşur. Bunun olmasının nedeni çoğunlukla kullanıcının sınıfı bildirirken yaptığı programlama hatasından kaynaklanmaktadır.

Java komut satırında ana sınıf bulunamadı veya 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 çeşitli senaryolarda hata yapar. İlerlemeden önce, Java programlama dili ve nasıl çalıştığı konusunda temel bir bilgiye sahip olduğunuzu varsayıyoruz.

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

'Ana sınıf bulunamadı veya yüklenemedi' mesajı, Java motorunun yürütme için sınıfı getirme ilk adımının başarısız olduğu anlamına gelir. Java komut mümkün değildi bulmak doğru dizinde sınıfı.

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

'Java' sözdizimi nedir?

Çalıştırmaya çalışırken terminalin neden bize bir hata döndürdüğünü gidermeye başlamadan önce, önce komutun sözdizimine bakmamız gerekir. Doğru sözdizimini kullanmıyorsanız, bu hatayla kaçınılmaz olarak karşılaşacaksınız.

Komutun normal sözdizimi şuna benzer:

 java [...] [...]

İşte bir komut satırı seçeneği, tam nitelikli bir Java sınıfı adıdır 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.ListAppuals kevin okları bart

Yukarıdaki komut, java komutunun aşağıdaki işlemleri yürütmesini sağlayacaktır:

  • ' Com.acme.example.ListAppuals ' sınıfının derlenmiş bir sürümünü arayacaktır .
  • Aramadan sonra sınıfı yükleyecektir.
  • Daha sonra, sınıf yüklendiğinde, sınıf geçerli bir imzaya, değiştiricilere ve dönüş türüne sahip bir 'ana' yöntem aranacaktır. Örnek bir ana sınıf şöyle bir şey olabilir:
public static void main (Dize [])
  • Yöntem, dizge [] olarak 'kevin', 'oklar' ve 'bart' bağımsız değişkenleriyle çağrılacaktır.

'Ana sınıf bulunamadı veya yüklenemedi' Nasıl Onarılır

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

Kullanıcıların yaptığı en yaygın hata, argüman olarak yanlış bir sınıf adı vermeleridir (veya doğru bir sınıf adı yanlış bir formdur). Komut satırında parametreler bildirdiğimiz için, sınıf adı argümanını yanlış bir biçimde iletmeniz çok olasıdır. Burada hata yapabileceğiniz tüm olası senaryoları listeleyeceğiz.

  • Bir yazma basit sınıf adı . Sınıfı 'com.acme.example' gibi bir pakette bildirirseniz , Java komutundaki paket dahil olmak üzere tam sınıf adını kullanmanız gerekir .
java com.acme.example.ListAppuals

onun yerine

java ListAppuals
  • Bir dosya adı veya yol adı bildirmek yerine bir sınıf adı belirtmelisiniz . Bunun için bir yol adı / dosya adı belirtirseniz, Java sınıfı getirmez. Yanlış girişler şunları içerir:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Kasa dikkate alınmalıdır. Java komutları büyük / küçük harfe duyarlıdır ve tek bir harfle bile hata yaparsanız, ana sınıfı yükleyemezsiniz. Yanlış hatalara bir örnek :
java com.acme.example.listappuals
  • Sen olmamalıdır bir beyan kaynak dosya adı . Daha önce bahsedildiğ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 baştan savma bir hata yaptıysanız, bunu düzelttiğ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 bildirdiyseniz, ancak yine de hata gösteriliyorsa, java komutunun belirtilen sınıf adını yolda bulamama ihtimali vardır. Sınıf yolu, Java çalışma zamanının kaynak ve sınıf dosyalarını aradığı bir yoldur. Aşağıda gösterildiği gibi iki farklı komut kullanarak sınıf yolunu kolayca ayarlayabilirsiniz:

C:> sdkTool -sınıfyolu sınıfyolu1; sınıfyolu2 ... C:> CLASSPATH = sınıfyol1; sınıfyolu2 ...

Sınıf yolu hakkında daha fazla bilgi edinmek için aşağıdaki belgelere göz atmalısınız.

Java komut belgeleri

Sınıf yolunu ayarlama

3. Çözüm: Dizini kontrol etme

Bir dizini sınıf yolu olarak bildirdiğinizde, her zaman ad alanının köküne karşılık gelir. Örneğin "/ usr / local / acme / classes" sınıf yolunda ise, Java "com.acme.example.Appuals" sınıfını arayacaktır. Aşağıdaki yol adına sahip bir sınıf arayacaktır:

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

Yani özünde, 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 görmelisiniz. Sınıflarınızın FQN'si "com.acme.example.Appuals" ise, Java "com / acme / example" dizininde "Appuals.class" arayacaktır.

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

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

Ardından aşağıdaki senaryolar geçerli olacaktır:

# yanlış, FQN gerekli java Appuals # yanlış, mevcut çalışma dizininde "com / acme / example" klasörü yok java com.acme.example.Appuals # yanlış, yukarıdaki senaryoya benzer java -sınıf yolu. com.acme.example.Appuals # Tamam; göreli bir sınıf yolu ayarlanır java -sınıf yolu ../../ .. com.acme.example.Appuals # OK; mutlak bir sınıf yolu, java -sınıfyolu / usr / local / acme / classes com.acme.example olarak ayarlanır.

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

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

Sizin durumunuzda yukarıdaki çözümlerin tümü doğruysa, kaynak kodunuzun doğru klasöre yerleştirildiğinden emin olmanız gerekir. Ayrıca paketi doğru bir şekilde beyan ettiniz . Kodunuzu bir IDE ile çalıştırırsanız, muhtemelen size sorunla ilgili bilgi verecektir. Ancak bizim durumumuzda, onu komut isteminde çalıştırdığımız için, hata fark edilmeyecek ve tartışılan sınıf hatasını alacaksınız.