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



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Klaida „ Nepavyko rasti ar įkelti pagrindinės klasės ’Įvyksta, kai komandų eilutėje naudojant„ Java “komandą paleidžiama„ Java “programa, 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

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



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 klaidą „Nepavyko rasti ar įkelti pagrindinės klasės“ „Java“?

Pranešimas „Nepavyko rasti ar įkelti pagrindinės klasės“ reiškia, kad pirmasis „Java“ variklio veiksmas, atnešant klasę vykdyti, nepavyko. The java komanda nesugebėjo rasti klasę teisingame kataloge.

Kai kuriais atvejais turite pridėti teisingas failo kelias ir nukreipkite „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:

  • Ji ieškos parengtos klasės versijos „ com.acme.example.ListAppuals '.
  • 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ą perduosite neteisinga forma. Čia pateiksime visus galimus scenarijus, kuriuose galite suklysti.

  • Rašymas a paprastas klasės pavadinimas . Jei klasę deklaruojate tokiame pakete kaip „com.acme.example“, turite naudoti pilnas klasės pavadinimas įskaitant paketą į „Java“ komandą.
java com.acme.example.ListAppuals

vietoj

java ListAppuals
  • Tu turėtum paskelbti klasės pavadinimą užuot deklaravęs failo ar kelio pavadinimą. „Java“ neatsiima klasės, jei deklaruojate jos kelią / failo pavadinimą. Neteisinga įrašai apima:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Korpusas reikia atsižvelgti. „Java“ komandose skiriamos didžiosios ir mažosios raidės, o jei suklysite net su viena raide, negalėsite įkelti pagrindinės klasės. Pavyzdys neteisingos klaidos yra:
java com.acme.example.listappuals
  • Tu neturėtų pareikšti šaltinio failo vardas . Kaip minėta anksčiau, klasę reikia deklaruoti tik teisingu viso klasės pavadinimo formatu. Klaidos pavyzdys:
java ListAppuals.java
  • Ši klaida taip pat atsiras, jei atliksite rašymo klaida arba pamiršti 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: klasės kelio tikrinimas

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į. Pvz., 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 pakatalogis ir pažiūrėkite, 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, kad šis scenarijus:

  • Klasė, kurią norite paleisti, yra: com.acme.example.Appuals
  • The viso failo kelias yra: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The dabartinis darbo katalogas yra: / usr / local / acme / class / com / acme / example /

Tada galiotų šie scenarijai:

# neteisingas, 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: Į klasės kelią taip pat turi būti įtrauktos visos kitos programos (ne sisteminės), 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 paketą . 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 jūs gausite aptariamą klasės klaidą.

4 minutes perskaityta