&Quot;ya da ana sınıfı bulmak yük" anlamına Gelebilir ne iş yapar?
Yeni Java geliştiriciler deneyim programları hata mesajı ile çalıştırmak için başarısız olduğunu yaygın bir sorun: Could not find or load main class ...
Bu, neden ve nasıl bunu düzeltmek gerekir size ne ifade ediyor?
CEVAP
java <class-name>
komut sözdizimi
İlk olarak, bir program java
(javaw
) komutunu kullanarak başlatmak için doğru şekilde anlamak gerekir.
Normal sözdizimi1bu:
java [ <option> ... ] <class-name> [<argument> ...]
nerede <option>
bir komut satırı seçeneği (ile başlayan "-" karakteri), <class-name>
bir tam olarak nitelenmiş Java sınıfı adını ve <argument>
rasgele bir komut satırı bağımsız değişkeni alır geçirilen uygulama.
1 - "" JAR dosyaları olan Ben alt kısmında anlatacağız. yürütülebilir için ikinci bir sözdizimi Vardır
Tam code geleneksel olarak Java kaynak kodu; örneğin yazılır
packagename.packagename2.packagename3.ClassName
Ancak java
komut bazı sürümleri dönemlerde; örneğin yerine eğik çizgi kullanmak için izin verir
packagename/packagename2/packagename3/ClassName
dosya bir yol gibi görünüyor, ama değil. Bu dönem dikkat edintam olarak code niteliklistandart Java terminoloji ... ben sadece seni şaşırtmak için yapılmış bir şey değil :-)
Burada java
bir komut nasıl olması gerektiğine bir örnek:
java -Xmx100m com.acme.example.ListUsers fred joe bert
Yukarıdaki java
komut şu: neden oluyor
com.acme.example.ListUsers
sınıf derlenmiş sürümünü arayın.- Sınıf yük.
- Sınıf imza
static void main(String[])
26 *bir yöntem olup olmadığını kontrol edin. - Bu yöntem, komut satırı argümanları iletme çağrısı ("fred", "joe", "bert")
String[]
.
Java edemiyor sınıfı bulmak neden nedenleri
Mesajı "bulunamadı veya ana sınıfı ...", bu ilk adım başarısız oldu anlamına gelir. yük olsun java
komut sınıfı bulmak mümkün değildi. Ve gerçekten de, " ... " mesajı olacaktam nitelikli bir sınıf adıjava
arıyor.
Neden sınıf bulmak mümkün olabilir mi? Temelde iki ana neden vardır:
İlk olası nedeni yanlış sınıfa adını vermiş olabilir. (Veya ... sınıf adı, yanlış şeklinde. ama sağ) Örnek dikkate alındığında, yukarıda, çeşitli buradayanlış yollarsınıf adını belirlemek için:
Örnek 1 - basit bir sınıf adı:
java ListUser
Sınıf
com.acme.example
gibi bir paket bildirirken o zaman tam code kullanmanız gerekirdahilpaketijava
komutu; örneğin adıjava com.acme.example.ListUser
Örnek 2 - bir sınıf adı yerine: dosya adı veya yol adı
java ListUser.class java com/acme/example/ListUser.class
#3 - bir sınıf adı kasa ile örnek yanlış:
java com.acme.example.listuser
Örnek 4 - bir yazım hatası
java com.acme.example.mistuser
İkinci olası nedeni, sınıf adının doğru olduğunu, ama java
komut olamaz sınıfı bulmak. Bunu anlamak için, bu kavramı anlamak gerekir"". sınıf Bu açıklanmıştıriyiOracle Dokümantasyon: tarafından
- The
java
command documentation - Setting the Classpath.
- Java Eğitimi - PATH and CLASSPATH
Yani ... eğer doğru sınıfı belirtilen ad varsa, kontrol etmek için bir sonraki şey doğru sınıf belirtildi
- Üç belgeleri yukarıda bağlantılı bilgi edinin. (Evet ... onları OKUYUN. Bir Java programcısı önemlidiranlarJava sınıf yolu mekanizmalarının nasıl çalıştığını en azından temel.)
java
komutunu çalıştırdığınızda, komut satırı ve / veya yürürlükte olan SINIF ortam değişkeni bak. Dizin adları ve JAR dosya adları doğru olup olmadığını kontrol edin.- Eğer varsa oradagörecelionlar
java
komutu çalıştırdığınızda etkisi olduğu doğru ... geçerli dizinden gidermek bu sınıf, check-in yol adlarını. - Sınıf (hata iletisinde belirtilen) yer alan olup olmadığını kontrol edinetkilisınıf.
Ek Notlar:
Sınıf, bir dizin koyduğunuzda, notionally nitelikli ad alanı köküne karşılık gelir. Sınıflar altında kök dizin yapısı yer alıyorbir yol adı tam adı eşleme ile. Yani örneğin, "/usr/local/acme/sınıflar" sınıf yol, o zaman JVM görünüyor için bir sınıf adı
com.acme.example.Foon
, o-ecek bakmak için ".sınıf" bu dosya yol adı:/usr/local/acme/classes/com/acme/example/Foon.class
Eğer "/usr/local/örnek" sınıf, JVM sınıfı bulmak mümkün olmazdı./acme//sınıflar com/acme deseydik
Sınıf da buna dahil edilmesi gerekiyordiğer(sistem dışı) dersleri uygulama. duruma göre değişir (Sistem dersleri otomatik olarak bulunur ve nadiren böyle bir şey için endişelenmene gerek.)
java -jar <jar file>
sözdizimi
Alternatif "" JAR dosyalarını aşağıdaki gibidir: . yürütülebilir için kullanılan sözdizimi
java [ <option> ... ] -jar <jar-file-name> [<argument> ...]
örneğin
java -Xmx100m -jar /usr/local/acme-example/listuser.jar fred
Bu durumda noktadan giriş sınıfı (47* yani *) ve sınıf ismi JAR dosyasının APAÇIK belirtilmiştir.
Ides
Tipik bir Java IDE çocuk bir JVM içinde IDE Java uygulamaları JVM çalışan kendisi için ya da destek var. BugenellikleIDE kendi mekanizmaları çalışma zamanı sınıf inşa, ana sınıfı tanımlamak ve java
komut satırı oluşturmak için kullanır, çünkü bu özel durum, muaf.
Ancak yine de bu durum, eğer IDE arkasından bir şeyler söylemek gerçekleşmesi Olası şeyler kırmak için. Örneğin, önceden ayarlanmış bir Uygulama Başlatıcı için Java uygulaması, Eclipse, ve daha sonra taşınan JAR dosyası içeren "ana" sınıfı farklı bir yerde dosya sistemiEclipse söylemedenEclipse farkında olmadan yanlış bir sınıf ile JVM başlatacağını duyurdu.
Eğer bir IDE bu sorun alırsanız Kısacası, IDE devlet ve kırık proje başvuruları veya launcher yapılandırmaları bayat gibi şeyler için kontrol edin.
Diğer Kaynaklar
- Oracle Java Eğitimleri - Common Problems (and Their Solutions)
HTML amacı "no-js" sınıfı ne...
Neden Html yapar.Render " ActionLi...
gem install " rmagick;,'t bul...
&Quot yapar;durağan" sonra " ...
değişken boş veya " bulmak için; b...