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.
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