Korjaus: Pääluokkaa ei löytynyt tai ladattu

Virhe ' Ei löydy tai ladata pääluokkaa ' tapahtuu, kun käytetään Java-komentoa komentokehotteessa Java-ohjelman käynnistämiseksi määrittämällä luokan nimi päätelaitteeseen. Syy miksi näin tapahtuu, johtuu pääasiassa käyttäjän ohjelmointivirheestä luokkaa ilmoitettaessa.

Pääluokkaa ei löytynyt tai ladattu Java-komentoriviltä

Kuten aiemmin mainittiin, tämä virhe ei useimmiten liity järjestelmään ja käyttäjä tekee virheen useissa tilanteissa, kuten alla on esitetty. Ennen eteenpäin siirtymistä oletamme, että sinulla on perustiedot Java-ohjelmointikielestä ja sen toiminnasta.

Mikä aiheuttaa virheen 'Ei löydy tai ladata pääluokkaa' Java-ohjelmassa?

Viesti 'Ei löydy tai ladata pääluokkaa' tarkoittaa, että Java-moottorin ensimmäinen vaihe luokan noutamiseksi suoritettavaksi epäonnistui. Java-komento ei pystynyt paikallistamaan luokan oikeaan hakemistoon.

Joissakin tapauksissa sinun on lisättävä oikea tiedostopolku ja osoitettava Java-päätelaite oikeaan sijaintiin. Koska suoritat komennon komentorivipäätteestä, tietokone ei tiedä, mistä luokka löytyy tai missä se sijaitsee. Kohdennettujen IDE: iden kohdalla tämä ei ole ongelma, koska IDE pitää osoittimen osoittamassa nykyistä työhakemistoa.

Mikä on java-syntakse?

Ennen kuin aloitamme vianmäärityksen, miksi pääte palauttaa meille virheen yritettäessä suorittaa, meidän on ensin tarkasteltava komennon syntaksia. Jos et käytä oikeaa syntaksia, kohtaat tämän virheen väistämättä.

Komennon normaali syntaksi on jotain tällaista:

 java [...] [...]

Tässä on komentorivivaihtoehto, se on täysin määritelty Java-luokan nimi ja komentoriviargumentti, joka välitetään sovelluksellesi, kun koko paketti käännetään.

Esimerkki kelvollisesta komennosta on:

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

Yllä oleva komento saa java-komennon suorittamaan seuraavat toiminnot:

  • Se etsii käännettyä versiota luokasta ' com.acme.example.ListAppuals '.
  • Haun jälkeen se lataa luokan.
  • Seuraavaksi, kun luokka ladataan, luokalle haetaan päämenetelmää, jolla on kelvollinen allekirjoitus, muokkaajat ja palautustyyppi. Näyte pääluokasta olisi jotain:
public staattinen void main (String [])
  • Menetelmää kutsutaan argumentteina 'kevin', 'nuolet' ja 'bart' merkkijonona [].

Kuinka korjata 'Pääluokkaa ei löydy tai ladata'

Ratkaisu 1: Tarkista luokan nimen argumentti

Yleisin käyttäjien tekemä virhe on, että he antavat argumenttina väärän luokan nimen (tai oikea luokan nimi on väärä muoto). Koska ilmoitamme parametreja komentorivillä, on erittäin todennäköistä, että välität luokan nimen argumentin väärässä muodossa. Tässä luetellaan kaikki mahdolliset skenaariot, joissa voit tehdä virheen.

  • Kirjoittaminen yksinkertainen luokan nimi . Jos ilmoitat luokan paketissa, kuten 'com.acme.example', sinun on käytettävä koko luokan nimeä paketti mukaan lukien Java-komennossa.
java com.acme.example.ListAppuals

sijasta

java ListAppuals
  • Sinun tulisi ilmoittaa luokan nimi sen sijaan, että ilmoittaisit tiedostonimen tai polun nimen. Java ei hae luokkaa, jos ilmoitat sille polun / tiedostonimen. Virheelliset merkinnät sisältävät seuraavat:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Kotelo tulee ottaa huomioon. Java-komennot ovat isot ja pienet kirjaimet, ja jos teet virheen edes yhdestä kirjaimesta, et voi ladata pääluokkaa. Esimerkkejä virheellisistä virheistä ovat:
java com.acme.example.listappuals
  • Sinun ei pitäisi ilmoittaa lähdetiedostonimeä . Kuten aiemmin mainittiin, sinun on ilmoitettava luokka vain oikeassa koko luokan nimimuodossa. Esimerkki virheestä on:
java ListAppuals.java
  • Tämä virhe ilmenee myös, jos teet kirjoitusvirheen tai unohdat kirjoittaa luokan nimen kokonaan .

Jos olet tehnyt huolimattomia virheitä ilmoittaessasi luokan nimen, varmista, että olet korjannut sen ja yritä sitten käynnistää ohjelma.

Ratkaisu 2: Luokkatien tarkistus

Jos olet ilmoittanut luokan nimen oikein, mutta virhe näkyy silti, on todennäköistä, että java-komento ei löytänyt määritettyä luokan nimeä polulta. Classpath on polku, jolla Java ajonaikainen etsii resurssi- ja luokkatiedostoja. Voit helposti asettaa luokan polun kahdella eri komennolla alla olevan kuvan mukaisesti:

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

Saadaksesi enemmän tietoa luokkatiedosta, sinun kannattaa tarkistaa seuraavat asiakirjat.

Java-komentojen dokumentaatio

Luokkatien asettaminen

Ratkaisu 3: Hakemiston tarkistus

Kun ilmoitat hakemiston luokan poluksi, se vastaa aina nimitilan juurta. Esimerkiksi jos “/ usr / local / acme / class” on luokkapolulla, Java etsii luokkaa ”com.acme.example.Appuals”. Se etsii luokan, jolla on seuraava polun nimi:

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

Joten jos lisäät seuraavan osoitteen luokkatielle, Java ei löydä luokkaa:

/ usr / local / acme / class / com / acme / esimerkki

Tarkista myös alihakemisto ja tarkista, vastaako se alaluetteloa. Jos luokkien FQN on "com.acme.example.Appuals", Java etsii hakemistoa "Appuals.class" hakemistosta "com / acme / example".

Oletetaan seuraava esimerkki, jos haluat antaa sinulle esimerkin:

  • Luokka, jonka haluat suorittaa, on: com.acme.example.Appuals
  • Täysi tiedostopolku on: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Työhakemistosta on: / usr / local / huippu / luokat / com / huippu / esimerkki /

Sitten seuraavat skenaariot olisivat voimassa:

# väärä, FQN tarvitaan java Appuals # väärä, nykyisessä työkansiossa java com.acme.example.Appuals # väärä ei ole `com / acme / example`-kansiota, samanlainen kuin yllä olevassa skenaariossa java -classpath. com.acme.example.Appuals # OK; suhteellinen luokkatie on asetettu java -classpath ../../ .. com.acme.example.Appuals # OK; absoluuttinen luokan polku on asetettu java -classpath / usr / local / acme / class com.acme.example.Appuals

Huomaa: Luokkatien tulee sisältää myös kaikki muut luokitukset (muut kuin järjestelmät), joita sovelluksesi tarvitsevat.

Ratkaisu 4: Luokkapaketin tarkistus

Jos kaikki yllä olevat ratkaisut pitävät paikkansa tapauksessasi, sinun on varmistettava, että lähdekoodisi on asetettu oikeaan kansioon. Lisäksi olet ilmoittanut paketin oikein . Jos suoritat koodisi IDE: llä, se todennäköisesti ilmoittaa asiasta sinulle. Koska kuitenkin käytämme sitä komentokehotteessa, virhe jää huomaamatta ja saat keskusteltavan luokan virheen.