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

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

Pääluokan Java-komentoriviä ei löytynyt tai ladattu

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

Mikä aiheuttaa virheen 'Et löytänyt tai ladannut pääluokkaa' Java: sta?

Viesti 'Ei löytynyt tai ladattu pääluokkaa' tarkoittaa, että Java-moottorin ensimmäinen vaihe, joka hakee luokan toteuttamista varten, on epäonnistunut. Java-komento ei pystynyt paikantamaan luokkaa oikeasta hakemistosta.

Joissakin tapauksissa sinun on lisättävä oikea tiedostopolku ja osoitettava Java-pääte oikeaan sijaintiin. Koska suoritat komentoa komentorivipäätteeltä, tietokone ei tiedä, mistä luokasta löytyy tai missä se sijaitsee. Kohdennetuissa IDE: ssä tämä ei ole ongelma, koska IDE pitää osoittimen osoittaen kohti nykyistä työhakemistoa.

Mikä on 'java' -sintaksi?

Ennen kuin aloitamme vianetsinnän, miksi terminaali palauttaa meille virheen yrittäessämme suorittaa, on ensin tutkittava komennon syntaksi. Jos et käytä oikeata syntaksia, kohtaat tämän virheen väistämättä.

Komennon normaali syntaksi on jotain tällaista:

 java [...] [...] 

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

Esimerkki kelvollisesta komennosta on:

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

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

  • Se etsii koottua versiota luokasta com.acme.example.ListAppuals .
  • Haun jälkeen se lataa luokan.
  • Seuraavaksi, kun luokka ladataan, luokalle haetaan 'päämenetelmää', jolla on kelvollinen allekirjoitus, muokkaimet ja palautustyyppi. Pääluokan näyte olisi jotain:
 julkinen staattinen tyhjä pää (merkkijono []) 
  • Menetelmää kutsutaan argumentteilla 'kevin', 'nuolet' ja 'bart' merkkijonona [].

Kuinka korjata 'Pääluokkaa ei löytynyt tai ladata "

Ratkaisu 1: Luokan nimen argumentin tarkistaminen

Yleisin virhe, jonka käyttäjät tekevät, on, että he antavat argumentiksi väärän luokan nimen (tai oikea luokan nimi on väärä muoto). Koska julistamme parametreja komentorivillä, on erittäin todennäköistä, että välität luokan nimen argumentin väärään muotoon. Tässä luetellaan kaikki mahdolliset skenaariot, joissa voit tehdä virheen.

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

sijasta

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

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

Ratkaisu 2: Tarkista luokkatie

Jos olet ilmoittanut luokanimen oikein, mutta näet silti virheen, on mahdollista, että Java-komento ei löytänyt määritettyä luokan nimeä polulta. Luokkatie on polku, jolla Java-ajonaikainen haku etsii resurssi- ja luokkatiedostoja. Voit helposti asettaa luokkatien kahdella eri komennolla alla olevan kuvan mukaisesti:

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

Saadaksesi enemmän tietoa luoktatiestä, tarkista seuraavat asiakirjat.

Java-komentojen dokumentaatio

Luokkatien asettaminen

Ratkaisu 3: Tarkista hakemisto

Kun julistat hakemiston luokkatieksi, se vastaa aina nimitilan juuriä. Jos esimerkiksi ”/ usr / local / acme / class” on luokkatiellä, Java etsii luokkaa “com.acme.example.Appuals”. Se etsii luokkaa, jolla on seuraava polunimi:

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

Joten pohjimmiltaan, jos laitat seuraavan osoitteen luokkatielle, Java ei löydä luokkaa:

 / Usr / local / Acme / luokat / com / acme / esimerkki 

Sinun tulisi myös tarkistaa alihakemisto ja tarkistaa, vastaako se FQN: tä. Jos luokkienne FQN on ”com.acme.example.Appuals”, Java etsii ”Appuals.class” hakemistosta “com / acme / esimerkki”.

Oletetaan seuraava esimerkki:

  • Luokka, jonka haluat suorittaa, on: com.acme.example.Appuals
  • Koko tiedostopolku on: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Nykyinen työhakemisto on: / usr / local / acme / class / com / acme / esimerkki /

Sitten seuraavat skenaariot pätevät:

 # väärä, FQN tarvitaan java Appuals # väärä, nykyisessä toimivassa hakemistossa java com.acme.example.Appuals # väärässä ei ole `com / acme / esimerkki` -kansiota, samanlainen kuin yllä olevassa skenaariossa java -classpath. com.acme.example.Appuals # OK; suhteellinen luokkatie on asetettu java -luokkarata ../../ .. com.acme.example.Appuals # OK; absoluuttinen luokkarata on asetettu java -luokkarata / usr / local / acme / luokat com.acme.example.Appuals 

Huomaa: Classpath: n on sisällettävä myös kaikki muut luokat (ei-järjestelmä), joita sovelluksesi tarvitsevat.

Ratkaisu 4: Luokkapaketin tarkistaminen

Jos kaikki yllä olevat ratkaisut pätevät tapauksessasi, sinun on varmistettava, että lähdekoodisi on oikeassa kansiossa. Lisäksi olet ilmoittanut paketin oikein. Jos käytät koodiasi IDE: llä, se todennäköisesti ilmoittaa sinulle ongelmasta. Koska kuitenkin käytämme sitä komentokehotteessa, virhe jää huomaamatta ja saat luokkavirheen keskustelun alla.

Mielenkiintoisia Artikkeleita