Pataisymas: Nepavyko rasti ar įkelti pagrindinės klasės

Klaida „ Nepavyko rasti ar įkelti pagrindinės klasės “ atsiranda, kai komandų eilutėje komandai „java“ paleidus „Java“ programą, terminale nurodant klasės pavadinimą. Priežastis, kodėl taip atsitinka, dažniausiai kyla dėl vartotojo programavimo klaidos deklaruojant klasę.

Nepavyko rasti ar įkelti pagrindinės klasės „Java“ komandinėje eilutėje

Kaip minėta anksčiau, ši klaida dažniausiai nėra susijusi su sistema, o vartotojas daro klaidą keliuose scenarijuose, kaip parodyta žemiau. Prieš eidami į priekį, manome, kad turite pagrindines žinias apie „Java“ programavimo kalbą ir jos veikimą.

Kas sukelia „Java“ klaidą „Nepavyko rasti ar įkelti pagrindinės klasės“?

Pranešimas „Nepavyko rasti arba įkelti pagrindinės klasės“ reiškia, kad pirmasis „Java“ variklio žingsnis, atnešant klasę vykdyti, nepavyko. „ Java“ komanda negalėjo rasti klasės teisingame kataloge.

Kai kuriais atvejais turite pridėti teisingą failo kelią ir nukreipti „Java“ terminalą į teisingą vietą. Kadangi vykdote komandą iš komandinės eilutės terminalo, kompiuteris nežino, kur reikia rasti klasę arba kur ji yra. Tikslinėse IDE tai nėra problema, nes IDE palaiko rodyklę, nukreiptą į dabartinį darbo katalogą.

Kas yra „Java“ sintaksė?

Prieš pradėdami trikčių diagnostiką, kodėl terminalas pateikia mums klaidą bandant vykdyti, pirmiausia turime pažvelgti į komandos sintaksę. Jei nenaudojate teisingos sintaksės, neišvengiamai susidursite su šia klaida.

Įprasta komandos sintaksė yra maždaug tokia:

 java [...] [...]

Čia yra komandinės eilutės parinktis, yra visiškai kvalifikuotas „Java“ klasės pavadinimas ir tai yra komandinės eilutės argumentas, kuris perduodamas jūsų programai, kai sudaromas visas paketas.

Galiojančios komandos pavyzdys yra:

java -Xmx100m com.acme.example.ListAppuals kevin strėlės bart

Pirmiau nurodyta komanda java komandai atliks šias operacijas:

  • Jis ieškos kompiliuotos klasės „ com.acme.example.ListAppualsversijos .
  • Po paieškos jis įkels klasę.
  • Tada, kai klasė bus įkelta, klasėje bus ieškoma „pagrindinio“ metodo su galiojančiu parašu, modifikatoriais ir grąžinimo tipu. Pagrindinės klasės pavyzdys būtų kažkas panašaus:
public static void main (eilutė [])
  • Metodas bus vadinamas argumentais „kevin“, „strėlės“ ir „bart“ kaip eilutė [].

Kaip pataisyti „Nepavyko rasti ar įkelti pagrindinės klasės“

1 sprendimas: klasės pavadinimo argumento tikrinimas

Dažniausia vartotojų daroma klaida yra ta, kad jie pateikia neteisingą klasės pavadinimą kaip argumentą (arba teisingas klasės pavadinimas yra neteisinga forma). Kadangi mes deklaruojame parametrus komandinėje eilutėje, labai tikėtina, kad klasės pavadinimo argumentą pateiksite neteisinga forma. Čia pateiksime visus galimus scenarijus, kuriuose galite suklysti.

  • Paprasto klasės pavadinimo rašymas . Jei deklaruojate klasę pakete, pvz., „Com.acme.example“, „Java“ komandoje turite naudoti visą klasės pavadinimą, įskaitant paketą.
java com.acme.example.ListAppuals

vietoj

java ListAppuals
  • Užuot deklaravę failo ar kelio pavadinimą, turėtumėte deklaruoti klasės pavadinimą. „Java“ neatsiima klasės, jei deklaruojate jos kelią / failo pavadinimą. Neteisingi įrašai yra šie:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Reikėtų atsižvelgti į apvalkalą . „Java“ komandose skiriamos didžiosios ir mažosios raidės, o jei suklysite net su viena raide, negalėsite įkelti pagrindinės klasės. Kurio pavyzdys neteisingų klaidų yra:
java com.acme.example.listappuals
  • Jūs neturėtumėte deklaruoti šaltinio failo pavadinimo . Kaip minėta anksčiau, klasę reikia deklaruoti tik teisingu viso klasės pavadinimo formatu. Klaidos pavyzdys:
java ListAppuals.java
  • Ši klaida taip pat atsitiks, jei padarysite spausdinimo klaidą arba pamiršote visiškai parašyti klasės pavadinimą .

Jei deklaruodami klasės pavadinimą padarėte aplaidaus klaidos, įsitikinkite, kad ją ištaisėte, tada pabandykite paleisti programą.

2 sprendimas: patikrinkite klasės kelią

Jei teisingai deklaravote klasės pavadinimą, bet vis tiek rodoma klaida, tikėtina, kad komanda „java“ negalėjo rasti nurodyto klasės pavadinimo kelyje. „Classpath“ yra kelias, kuriame „Java“ vykdymo laikas ieško išteklių ir klasės failų. Galite lengvai nustatyti klasės kelią naudodami dvi skirtingas komandas, kaip parodyta žemiau:

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

Norėdami sužinoti daugiau apie klasės kelią, turėtumėte peržiūrėti šiuos dokumentus.

„Java“ komandos dokumentacija

Klasės kelio nustatymas

3 sprendimas: tikrinamas katalogas

Kai deklaruojate katalogą kaip klasės kelią, jis visada atitiks vardų srities šaknį. Pavyzdžiui, jei „/ usr / local / acme / class“ yra klasės kelyje, tada „Java“ ieškos klasės „com.acme.example.Appuals“. Ji ieškos klasės su tokiu kelio pavadinimu:

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

Taigi iš esmės, jei klasių kelyje įrašysite šį adresą, „Java“ negalės rasti klasės:

/ usr / local / acme / class / com / acme / example

Taip pat turėtumėte patikrinti savo pakatalogį ir pamatyti, ar jis atitinka FQN. Jei jūsų klasių FQN yra „com.acme.example.Appuals“, tada „Java“ ieškos „Appuals.class“ kataloge „com / acme / example“.

Pateikime jums pavyzdį, tarkime, tokį scenarijų:

  • Klasė, kurią norite paleisti, yra: com.acme.example.Appuals
  • Visas failo kelias yra: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Dabartinis darbinis katalogas yra: / usr / local / Acme / užsiėmimai / lt / Acme / pavyzdys /

Tada galiotų šie scenarijai:

# neteisinga, reikalingas FQN „java Appuals“ # neteisingas, dabartiniame darbo kataloge „java com.acme.example.Appuals # neteisingas, panašus į aukščiau pateiktą scenarijų„ java -classpath “, nėra aplanko` com / acme / example`. com.acme.example.Appuals # OK; santykinis klasės kelias yra nustatytas java -classpath ../../ .. com.acme.example.Appuals # OK; absoliutus klasės kelias yra nustatytas java -classpath / usr / local / acme / class com.acme.example.Appuals

Pastaba: „Classpath“ taip pat turi apimti visas kitas programas (ne sistemines), kurių reikia jūsų programoms.

4 sprendimas: klasės paketo tikrinimas

Jei visi minėti sprendimai tinka jūsų atveju, turite įsitikinti, kad jūsų šaltinio kodas yra teisingame aplanke. Be to, teisingai deklaravote pakuotę . Jei paleidžiate kodą naudodami IDE, jis tikriausiai informuos jus apie problemą. Tačiau mūsų atveju, kadangi mes ją vykdome komandų eilutėje, klaida nebus pastebėta ir gausite aptariamą klasės klaidą.