Popravak: Ne mogu se pronaći ili učitati glavna klasa

Pogreška ' Ne mogu pronaći ili učitati glavnu klasu ' pojavljuje se kada se pomoću naredbe java u naredbenom retku pokrene program Java određivanjem naziva klase u terminalu. Razlog zašto se to događa uglavnom je posljedica greške u programiranju korisnika prilikom deklariranja klase.

Nije moguće pronaći ili učitati glavnu klasu - Java naredbeni redak

Kao što je spomenuto prije, ova pogreška uglavnom nije povezana sa sustavom i korisnik pogriješi u nekoliko scenarija kako je prikazano u nastavku. Prije nego što krenemo naprijed, pretpostavljamo da imate osnovno znanje Java programskog jezika i kako on funkcionira.

Što uzrokuje pogrešku 'Ne mogu pronaći ili učitati glavnu klasu' u Javi?

Poruka "Ne mogu pronaći ili učitati glavnu klasu" znači da prvi korak Java motora dohvaća klasu za izvršenje nije uspio. Naredba java nije uspjela pronaći klasu u ispravnom direktoriju.

U nekim slučajevima morate dodati ispravan put datoteke i usmjeriti Java terminal na točno mjesto. Budući da naredbu izvodite iz terminala naredbenog retka, računalo ne zna gdje će se klasa nalaziti ili gdje se nalazi. U ciljanim IDE-ovima to nije problem jer IDE zadržava pokazivač usmjeren prema trenutnom radnom direktoriju.

Što je "java" sintaksa?

Prije nego što počnemo s rješavanjem problema zašto nam terminal vraća pogrešku prilikom pokušaja izvršenja, prvo moramo pogledati sintaksu naredbe. Ako ne upotrebljavate ispravnu sintaksu, neizbježno ćete se suočiti s ovom pogreškom.

Uobičajena sintaksa naredbe je ovako:

 java [...] [...] 

Ovdje je opcija naredbenog retka, potpuno kvalificirano ime klase Java i argument naredbenog retka koji se prosljeđuje u vašu aplikaciju kada se sastavlja cijeli paket.

Primjer valjane naredbe je:

 java -Xmx100m com.acme.example.ListAppuals kevin strelice bart 

Gornja naredba natjerat će naredbu java da izvrši sljedeće operacije:

  • Pretražit će sastavljenu verziju klase ' com.acme.example.ListAppuals '.
  • Nakon pretraživanja učitava klasu.
  • Zatim, kad se učitava klasa, klasa će se tražiti za "glavnu" metodu s valjanim potpisom, modifikatorima i tipom povratka. Primjer glavne klase bio bi nešto poput:
 javna statička praznina glavna (String []) 
  • Metoda će se pozivati ​​argumentima 'kevin', 'strelice' i 'bart' kao string [].

Kako popraviti "Ne mogu pronaći ili učitati glavnu klasu"

1. rješenje: Provjera argumenata imena klase

Najčešća greška koju korisnici čine je da kao argument daju pogrešno ime klase (ili je ispravno ime klase pogrešan oblik). Budući da parametre deklariramo u naredbenom retku, velika je vjerojatnost da ćete argument imena razreda proslijediti u pogrešnom obliku. Ovdje ćemo navesti sve moguće scenarije u kojima možete pogriješiti.

  • Pisanje jednostavnog naziva klase . Ako deklarirate klasu u paketu poput "com.acme.example", morate upotrijebiti puno ime razreda, uključujući paket u naredbi Java.
 java com.acme.example.ListAppuals 

umjesto

 java ListAppuals 
  • Trebali biste deklarirati ime klase umjesto deklariranja imena datoteke ili putanje. Java ne dohvaća klasu ako za nju deklarirate naziv putanje / datoteke. Netočni unosi uključuju sljedeće:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Kućište treba uzeti u obzir. Java naredbe razlikuju velika i mala slova, a ako pogriješite čak i jedno slovo, nećete moći učitati glavnu klasu. Primjer pogrešnih pogrešaka je:
 java com.acme.example.listappuals 
  • Ne biste trebali deklarirati naziv izvorne datoteke . Kao što je ranije spomenuto, samo morate deklarirati klasu u ispravnom formatu punog naziva. Primjer pogreške je:
 java ListAppuals.java 
  • Ova će se pogreška pojaviti i ako pogriješite pri tipkanju ili zaboravite u potpunosti napisati naziv klase .

Ako ste pogriješili u deklariranju imena klase, ispravite je i pokušajte pokrenuti program.

2. rješenje: Provjera klase

Ako ste ispravno proglasili ime klase, ali i dalje prikazuje pogrešku, vjerojatnost je da naredba java ne može pronaći navedeno ime klase na putu. Classpath je put na kojem Java Runtime traži datoteke resursa i klase. Klasični put možete lako postaviti pomoću dvije različite naredbe kao što je prikazano u nastavku:

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

Da biste dobili bolji uvid u školsku stazu, trebali biste pogledati sljedeće dokumente.

Java komandna dokumentacija

Postavljanje učionice

3. rješenje: Provjera direktorija

Kad katalog deklarirate kao klasu puta, ona će uvijek odgovarati korijenu prostora imena. Na primjer, ako je „/ usr / local / acme / klase“ na putu klase, Java će tražiti klasu „com.acme.example.Appuals“. Tražit će klasu sa sljedećim imenom puta:

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

Dakle, u suštini, ako sljedeću adresu stavite u classpath, Java neće moći pronaći klasu:

 / Usr / local / vrhunac / klase / hr / vrhunac / Primjer 

Trebali biste provjeriti i svoj poddirektorijum i provjerite odgovara li FQN-u. Ako je FQN vaše klase "com.acme.example.Appuals", Java će tražiti "Appuals.class" u direktoriju "com / acme / example".

Da bismo vam dali primjer, pretpostavimo sljedeći scenarij:

  • Klasa koju želite pokrenuti je: com.acme.example.Appuals
  • Cijeli put datoteke je: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Trenutačni radni imenik je: / usr / local / acme / klase / com / acme / example /

Tada bi se održavali sljedeći scenariji:

 # pogrešno, potreban je FQN java Appuals # pogrešno, u trenutnoj radnoj mapi direktorija java com.acme.example.Appuals # nije u redu, postoji mapa `com / acme / example`, nije u redu, slično gornjem scenariju java -classpath. com.acme.example.Appuals # OK; postavljen je relativni klasni put java -classpath ../../ .. com.acme.example.Appuals # OK; postavljen je apsolutni klasni put java -classpath / usr / local / acme / klase com.acme.example.Appuals 

Napomena: Klasa putanja mora uključivati ​​i sve ostale klase (izvan sustava) koje vaše aplikacije trebaju.

4. rješenje: Provjera paketa klase

Ako su sva gore navedena rješenja istinita u vašem slučaju, morate provjeriti je li vaš izvorni kôd smješten u ispravnoj mapi. Također ste ispravno deklarirali paket . Ako svoj kod pokrenete s IDE-om, vjerovatno će vas obavijestiti u vezi s problemom. Međutim, u našem slučaju, budući da ga pokrećemo u naredbenom retku, greška će proći neopaženo i dobit ćete klasnu pogrešku u raspravi.

Zanimljivi Članci