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.

Nem található vagy nem tölthető be a fő osztály - Java parancssor

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.

Érdekes Cikkek