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

Klaida „ Nepavyko rasti arba į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 nutinka, daugiausia yra dėl to, kad vartotojas programavimo klaidą deklaruoja apie klasę.

Nepavyko rasti arba įkelti pagrindinės klasės „Java“ komandų eilutės

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

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

Pranešimas „Nepavyko rasti arba įkelti pagrindinės klasės“ reiškia, kad pirmasis „Java“ variklio žingsnis, atkuriantis klasę, buvo nesėkmingas. „ Java“ komanda nesugebėjo rasti klasės teisingame kataloge.

Kai kuriais atvejais turite pridėti teisingą failo kelią ir nukreipti „Java“ terminalą į reikiamą vietą. Kadangi vykdote komandą iš komandinės eilutės terminalo, kompiuteris nežino, kur turi būti klasė arba kur ji yra. Tiksliniuose IDE tai nėra problema, nes IDE išlaiko žymiklį, nukreiptą į dabartinį darbinį katalogą.

Kas yra „java“ sintaksė?

Prieš pradėdami trikčių šalinimą, kodėl terminalas mums pateikia klaidą bandant vykdyti, pirmiausia turime peržvelgti komandos sintaksę. Jei naudojate ne teisingą sintaksę, neišvengiamai susidursite su šia klaida.

Įprasta komandos sintaksė yra kažkas tokio:

 java [...] [...] 

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

Tinkamos komandos pavyzdys:

 „Java“ -Xmx100m com.acme.example.ListAppuals Kevin strėlės 

Aukščiau pateikta komanda privers „Java“ komandą atlikti šias operacijas:

  • Bus ieškoma sukompiliuotos klasės „ com.acme.example.ListAppualsversijos .
  • Atlikus paiešką, ji įkels klasę.
  • Tada, kai klasė įkeliama, klasėje bus ieškoma „pagrindinio“ metodo su galiojančiu parašu, modifikatoriais ir grįžimo tipu. Pagrindinės klasės pavyzdys būtų kažkas tokio:
 viešas statinis tuščias pagrindinis (styga []) 
  • Metodas bus vadinamas argumentais „kevin“, „strėlės“ ir „bart“ kaip eilutė [].

Kaip išspręsti „Nepavyko rasti arba įkelti pagrindinės klasės“

1 sprendimas: patikrinkite klasės pavadinimo argumentą

Dažniausiai pasitaikančios klaidos yra tai, kad kaip argumentą jie pateikia neteisingą klasės pavadinimą (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 netinkama forma. Čia išvardinsime visus galimus scenarijus, kuriuose galite suklysti.

  • Parašyti paprastą klasės pavadinimą . Jei deklaruojate klasę tokiame pakete kaip „com.acme.example“, turite naudoti visą klasės pavadinimą, įskaitant paketą, „Java“ komandoje.
 „java com.acme.example.ListAppuals“ 

vietoj

 „java ListAppuals“ 
  • Turėtumėte deklaruoti klasės vardą, o ne deklaruoti failo ar kelio pavadinimą. „Java“ nekelia klasės, jei nurodote jos kelią / failo vardą. Neteisingi įrašai yra šie:
 „java ListAppuals.class“ „java com“ / „acme“ / pavyzdys / „ListAppuals.class“ 
  • Reikėtų atsižvelgti į apvalkalą . „Java“ komandos yra didžiųjų ir mažųjų raidžių, todėl padarius klaidą net viena raide, pagrindinės klasės įkelti negalėsite. Neteisingų klaidų pavyzdys:
 „Java“ com.acme.example.listappuals 
  • Jūs neturėtumėte deklaruoti šaltinio failo vardo . Kaip minėta anksčiau, jums reikia deklaruoti klasę tik teisingu viso klasės vardo formatu. Klaidos pavyzdys:
 „Java“ ListAppuals.java 
  • Ši klaida taip pat atsiras, jei padarysite spausdinimo klaidą arba pamiršite visiškai užrašyti klasės pavadinimą .

Jei paskelbdami klasės pavadinimą padarėte aplaidžių klaidų, įsitikinkite, kad ją ištaisėte, ir tada pabandykite paleisti programą.

2 sprendimas: Patikrinkite klasės kelią

Jei teisingai paskelbėte klasės pavadinimą, bet vis tiek parodote klaidą, gali būti, kad „Java“ komanda kelyje negalėjo rasti nurodyto klasės pavadinimo. „Classpath“ yra kelias, kuriame „Java runtime“ 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:> nustatykite CLASSPATH = classpath1; classpath2 ... 

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

„Java“ komandos dokumentacija

Klasės kelio nustatymas

3 sprendimas: Tikrinkite katalogą

Kai skelbiate katalogą kaip klasės kelią, jis visada atitiks vardų srities šaknį. Pvz., Jei „/ usr / local / acme / class“ yra klasės kelyje, „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 

Iš esmės, jei įtrauksite šį adresą į klasės kelią, „Java“ negalės rasti klasės:

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

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

Norėdami pateikti jums pavyzdį, tarkime, kad pateiktas toks scenarijus:

  • 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 / class / com / acme / example /

Tada bus šie scenarijai:

 # neteisingas, reikalingas FQN „Java“ Appuals # neteisingas, dabartiniame darbiniame kataloge „Java“ com.acme.example.Appuals # neteisingas, aplankas „com / acme / example“ nėra panašus į aukščiau pateiktą scenarijų „Java“ - „Classpath“. com.acme.example.Appuals # Gerai; nustatytas santykinis klasės kelias java -classpath ../../ .. com.acme.example.Appuals # OK; nustatomas absoliutus „classpath“ java -classpath / usr / local / acme / class com.acme.example.Appuals 

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

4 sprendimas: Patikrinkite klasės paketą

Jei jūsų atveju visi aukščiau išvardyti sprendimai teisingi, turite įsitikinti, kad šaltinio kodas yra tinkamame aplanke. Be to, jūs teisingai deklaravote pakuotę . Jei paleisite kodą naudodami IDE, greičiausiai jis jus informuos apie problemą. Tačiau mūsų atveju, kai mes jį vykdome komandų eilutėje, klaida neliks nepastebėta ir gausite aptariamą klasės klaidą.

Įdomios Straipsniai