Javítás: A főosztályt nem sikerült megtalálni vagy betölteni



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

A hiba ' A főosztályt nem sikerült megtalálni vagy betölteni ’Akkor fordul elő, amikor egy java parancsot használ a parancssorban egy Java program indításához az osztály nevének megadásával a terminálban. Ennek oka leginkább a felhasználó programozási hibájának tudható be, amikor deklarálta az osztályt.



Nem található a főosztály a Java parancssorban, és nem tölthető be

A fő osztály - Java parancssort nem sikerült megtalálni vagy betölteni



Mint korábban említettük, ez a hiba többnyire nem kapcsolódik a rendszerhez, és a felhasználó több szituációban is hibázik, az alábbiak szerint. Mielőtt továbblépnénk, feltételezzük, hogy alapvető ismeretekkel rendelkezik a Java programozási nyelvről és annak működéséről.



Mi okozza a Java-ban a „Nem található vagy betöltem a főosztályt” hibát?

A „Nem található vagy betöltődik a főosztály” üzenet azt jelenti, hogy a Java motor első lépése, amely az osztályt végrehajtásra lekéri, sikertelen volt. A java parancs nem volt képes keresse meg osztályt a megfelelő könyvtárban.

Bizonyos esetekben hozzá kell adnia a helyes fájl elérési útja és irányítsa a Java terminált a megfelelő helyre. Mivel a parancsot a parancssori terminálról hajtja végre, a számítógép nem tudja, hol található az osztály, hol található. A megcélzott IDE-knél ez nem a probléma, mivel az IDE mutatót tart az aktuális munkakönyvtár felé mutatva.

Mi a „java” szintaxis?

Mielőtt elkezdenénk a hibaelhárítást, miért ad vissza hibát a terminál a végrehajtás során, először meg kell vizsgálnunk a parancs szintaxisát. Ha nem a megfelelő szintaxist használja, akkor elkerülhetetlenül szembe kell néznie ezzel a hibával.



A parancs normál szintaxisa valami ilyesmi:

java [...] [...]

Ez egy parancssori opció, egy teljesen minősített Java osztálynév, és egy parancssori argumentum, amelyet a teljes csomag fordításakor adunk át az alkalmazásnak.

Az érvényes parancsra példa:

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

A fenti parancs a java parancsot a következő műveletek végrehajtására készteti:

  • Megkeresi a ’osztály fordított változatát com.acme.example.ListAppuals ”.
  • A keresés után betölti az osztályt.
  • Ezután az osztály betöltésekor az osztály megkeresi a „main” metódust, érvényes aláírással, módosítókkal és visszatérési típussal. A minta fő osztály valami ilyesmi lehet:
public static void main (String [])
  • A metódust a „kevin”, a „nyilak” és a „bart” argumentumokkal hívjuk meg stringként [].

A „Nem található vagy betöltődik a főosztály” javítás

1. megoldás: Az osztálynév argumentum ellenőrzése

A felhasználók által elkövetett leggyakoribb hiba az, hogy rossz osztálynevet adnak meg argumentumként (vagy a helyes osztálynév hibás forma). Mivel paramétereket deklarálunk a parancssorban, nagyon valószínű, hogy az osztálynév argumentumot rossz formában adja át. Itt felsoroljuk az összes lehetséges forgatókönyvet, ahol hibázhat.

  • Írás a egyszerű osztály neve . Ha az osztályt olyan csomagban deklarálja, mint például a „com.acme.example”, akkor a teljes osztálynév beleértve a csomagot a Java parancsban.
java com.acme.example.ListAppuals

ahelyett

java ListAppuals
  • Neked kellene deklaráljon osztálynevet fájlnév vagy útvonalnév deklarálása helyett. A Java nem tölti be az osztályt, ha deklarál egy elérési utat / fájlnevet. Helytelen a bejegyzések a következőket tartalmazzák:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Ház figyelembe kell venni. A Java parancsok megkülönböztetik a kis- és nagybetűket, és ha akár egyetlen betűt is hibázik, akkor nem tudja betölteni a fő osztályt. Egy példa hibás hibák vannak:
java com.acme.example.listappuals
  • te nem kellene kijelenteni forrás fájlnév . A korábbiakban említettek szerint csak az osztályt kell a teljes teljes osztálynév formátumban deklarálni. Példa a hibára:
java ListAppuals.java
  • Ez a hiba akkor is előfordul, ha a elírás vagy felejtsd el teljesen megírni az osztály nevét .

Ha bármi hibát követett el az osztálynév deklarálásakor, győződjön meg róla, hogy kijavította, majd megpróbálja elindítani a programot.

2. megoldás: Az osztályút ellenőrzése

Ha helyesen deklarálta az osztálynevet, de továbbra is megjelenik a hiba, akkor valószínű, hogy a java parancs nem találta meg a megadott osztálynevet az elérési útvonalon. Az classpath egy olyan útvonal, ahol a Java futásidejű erőforrás- és osztályfájlokat keres. Könnyen beállíthatja az osztályútvonalat két különböző parancs segítségével, az alábbiak szerint:

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

Ha többet szeretne megtudni az osztályútról, olvassa el a következő dokumentumokat.

Java parancsdokumentáció

Osztályút beállítása

3. megoldás: Könyvtár ellenőrzése

Ha egy könyvtárat osztályútnak nyilvánít, akkor az mindig a névtér gyökerének felel meg. Például, ha az „/ usr / local / acme / class” az osztályútvonalon van, akkor a Java a „com.acme.example.Appuals” osztályra keres. Osztályt fog keresni a következő útvonalnévvel:

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

Tehát lényegében, ha a következő címet írja be az osztályútvonalba, a Java nem fogja megtalálni az osztályt:

/ usr / local / acme / class / com / acme / example

Ellenőrizze a alkönyvtár és nézze meg, hogy megfelel-e az FQN-nek. Ha az osztályok FQN értéke „com.acme.example.Appuals”, akkor a Java az „Appuals.class” kifejezésre keres a „com / acme / example” könyvtárban.

Tegyünk fel egy példát a következő forgatókönyvre:

  • A futtatni kívánt osztály: com.acme.example.Appuals
  • A teljes fájl elérési útja a következő: /usr/local/acme/classes/com/acme/example/Appuals.class
  • A az aktuális munkakönyvtár a: / usr / local / acme / class / com / acme / example /

Ekkor a következő forgatókönyvek lennének érvényesek:

# helytelen, az FQN-re van szükség java Appuals # helytelen, a `java com.acme.example.A jelenlegi munkakönyvtárban nincs` com / acme / example` mappa. com.acme.example.Appuals # OK; egy relatív osztályút beállítása java -classpath ../../ .. com.acme.example.Appuals # OK; egy abszolút osztályút a java -classpath / usr / local / acme / class com.acme.example.Appuals

Jegyzet: Az osztályútnak tartalmaznia kell az összes többi osztályt (nem rendszer), amelyre az alkalmazásoknak szüksége van.

4. megoldás: Osztálycsomag ellenőrzése

Ha a fenti megoldások az Ön esetében is igazak, meg kell győződnie arról, hogy a forráskód a megfelelő mappába került. Ezenkívül helyesen deklarálta a csomag . Ha IDE-vel futtatja a kódot, valószínűleg tájékoztatja Önt a problémáról. Esetünkben azonban, mivel parancssorban futtatjuk, a hiba észrevétlen marad, és a tárgyalt osztályhibát kapja.

4 perc olvasás