Javítás: Nem található vagy nem tölthető be a fő osztály
A ' Nem sikerült betölteni vagy betölteni a főosztályt ' hiba akkor jelentkezik, ha a parancssorban egy Java parancsot használunk, amellyel Java programot indítunk az osztály nevének megadásával a terminálon. Ennek oka elsősorban a felhasználó programozási hibájából származik, amikor az osztályt bejelenti.
Mint fentebb említettük, ez a hiba többnyire nem kapcsolódik a rendszerhez, és a felhasználó több forgatókönyvet hibáztat, amint az alább látható. Mielőtt továbblépnénk, feltételezzük, hogy alapvető ismerete van a Java programozási nyelvről és annak működéséről.
Mi okozza a "Nem találtam vagy nem töltöttem be a főosztályt" hibát a Java-ban?
A 'Nem sikerült betölteni vagy betölteni a főosztályt «üzenet azt jelenti, hogy a Java motor első lépése az osztály végrehajtásra történő beolvasása során sikertelen volt. A java parancs nem találta meg az osztályt a megfelelő könyvtárban.
Bizonyos esetekben meg kell adnia a helyes fájl elérési útját, és a Java terminált a megfelelő helyre kell mutatnia. 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, vagy hol található. A célzott IDE-kben ez nem a probléma, mivel az IDE mutatót mutat az aktuális munkakönyvtár felé mutatva.
Mi a 'java' szintaxisa?
Mielőtt elkezdenénk elhárítani a terminált, miért ad vissza hibát a végrehajtás megkísérlésekor, először meg kell vizsgálnunk a parancs szintaxisát. Ha nem a megfelelő szintaxist használja, akkor elkerülhetetlenül szembesül ezzel a hibával.
A parancs normál szintaxisa ehhez hasonló:
java [...] [...]
Itt van egy parancssori lehetőség, egy teljesen minősített Java osztálynév, és egy olyan parancssori argumentum, amelyet az alkalmazás átad, amikor a teljes csomagot összeállítják.
Egy érvényes parancs egy példája:
java -Xmx100m com.acme.example.ListAppuals kevin arrows bart
A fenti parancs a Java parancsot a következő műveletek végrehajtására készteti:
- A „ com.acme.example.ListAppuals ” osztály összeállított verzióját fogja keresni.
- A keresés után betölti az osztályt.
- Ezután az osztály betöltésekor az osztály megkeresi a „fő” módszert érvényes aláírással, módosítókkal és visszatérési típussal. A fő osztályminta lenne valami hasonló:
nyilvános statikus void main (karakterlánc [])
- A metódust 'kevin', 'nyilak' és 'bart' argumentumokkal hívják stringként [].
Hogyan lehet megtalálni vagy nem lehet betölteni a főosztályt?
1. megoldás: Az osztálynév argumentumának ellenőrzése
A felhasználók által leggyakrabban elkövetett hiba az, hogy argumentumként rossz osztálynevet adnak meg (vagy a helyes osztálynév helytelen forma). Mivel a paramétereket a parancssorban deklaráljuk, nagyon valószínű, hogy rossz formában adja át az osztálynév argumentumát. Itt felsoroljuk az összes lehetséges forgatókönyvet, ahol hibázhat.
- Egyszerű osztálynév írása. Ha deklarálja az osztályt egy csomagban, például a 'com.acme.example', akkor a Java parancsban a teljes osztálynevet kell használni, beleértve a csomagot is.
java com.acme.example.ListAppuals
ahelyett
java ListAppuals
- A fájlnevet vagy az útvonalat nem kell deklarálnia, hanem egy osztálynevet . A Java nem hozza be az osztályt, ha egy útvonalat / fájlnevet deklarál neki. A helytelen bejegyzések a következőket tartalmazzák:
java ListAppuals.class java com / acme / example / ListAppuals.class
- A burkolatot figyelembe kell venni. A Java parancsok kis- és nagybetűket érzékenyek, és ha még egy betűt is hibázik, akkor nem tudja betölteni a főosztályt. A helytelen hibákra példa:
java com.acme.example.listappuals
- Nem szabad deklarálni a forrásfájl nevét . Mint már említettem, akkor csak az osztályt kell a teljes teljes osztálynév formátumban bejelentenie. Példa egy hibára:
java ListAppuals.java
- Ez a hiba akkor is előfordul, ha gépelési hibát hajt végre, vagy elfelejti az osztálynevet teljesen megírni .
Ha hamis hibákat követett el az osztálynév bejelentésében, akkor javítsa ki, majd próbálja meg 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 megmutatja a hibát, akkor valószínű, hogy a java parancs nem találta meg a megadott osztálynevet az elérési úton. Az osztályút egy olyan útvonal, amelyen a Java futásidejű erőforrás- és osztályfájlokat keres. Könnyen beállíthatja az osztályút két különféle paranccsal, az alább látható módon:
C:> sdkTool -classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ...
Ha további betekintést szeretne kapni az osztályúthoz, akkor nézze meg a következő dokumentumokat.
Java parancs dokumentáció
Osztályút beállítása
3. megoldás: A könyvtár ellenőrzése
Amikor egy könyvtárat osztályútvá nyilvánít, akkor mindig megfelel a névtér gyökerének. Például, ha az „/ usr / local / acme / osztályok” az osztályútvonalon van, akkor a Java a „com.acme.example.Appuals” osztályt fogja keresni. A következő útnévvel rendelkező osztályt fogja keresni:
/usr/local/acme/classes/com/acme/example/Appuals.class
Tehát lényegében, ha az alábbi címet adja meg az osztályútba, a Java nem fogja megtalálni az osztályt:
/ Usr / local / csúcspont / classes / com / csúcspont / example
Ellenőrizze az alkönyvtárat is, és nézze meg, hogy megegyezik-e az FQN-vel. Ha az FQN osztálya “com.acme.example.Appuals”, akkor a Java egy “Appuals.class” -t keres a “com / acme / example” könyvtárban.
Például tegyük fel a következő forgatókönyvet:
- A futtatni kívánt osztály a következő: com.acme.example.Appuals
- A teljes fájl elérési útja : /usr/local/acme/classes/com/acme/example/Appuals.class
- A jelenlegi munkakönyvtár : / usr / local / acme / osztályok / com / acme / példa /
Akkor a következő forgatókönyvek állnának fenn:
# rossz, FQN szükséges java Appuals # rossz, nincs a "com / acme / example" mappa a jelenlegi működő könyvtárban a java com.acme.example.Appuals # rossz, hasonlóan a fenti forgatókönyvhöz a java -classpath. com.acme.example.Appuals # OK; egy relatív osztályút beállítva java -classpath ../../ .. com.acme.example.Appuals # OK; abszolút osztályút van beállítva java -classpath / usr / local / acme / osztályokhoz com.acme.example.Appuals
Megjegyzés: Az osztályútvonalnak tartalmaznia kell az összes többi osztályt (nem rendszer), amelyre az alkalmazásai szüksége van.
4. megoldás: Osztálycsomag ellenőrzése
Ha az összes fenti megoldás igaz az esetére, akkor ellenőriznie kell, hogy a forráskód a megfelelő mappába van-e helyezve. Ezenkívül helyesen jelentette be a csomagot . Ha a kódját IDE-vel futtatja, akkor valószínűleg tájékoztatja Önt a problémáról. Ebben az esetben azonban, mivel a parancssorba futtatjuk, a hiba észrevétlenül marad, és megbeszélés alatt lesz az osztályhiba.