Parandus: põhiklassi ei õnnestunud leida ega laadida



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Viga Põhiklassi ei õnnestunud leida ega laadida ’Ilmneb Java-käsu käivitamisel käsureal Java-käsu abil, määrates terminalis klassi nime. Põhjus, miks see juhtub, on enamasti tingitud kasutaja programmeerimisveast klassi deklareerimisel.



Java käsurealt ei õnnestunud põhiklassi leida ega laadida

Põhiklassi Java käsurida ei õnnestunud leida ega laadida



Nagu varem mainitud, ei ole see viga enamasti süsteemiga seotud ja kasutaja teeb mitme stsenaariumi korral vea, nagu allpool näidatud. Enne edasiliikumist eeldame, et teil on algteadmised Java programmeerimiskeelest ja selle toimimisest.



Mis põhjustab Java-s tõrke ‘Ei leitud või laadita põhiklassi’?

Teade „Põhiklassi ei õnnestunud leida ega laadida” tähendab, et Java-mootori esimene samm klassi täitmiseks toomisel nurjus. The java käsk ei suutnud leidma klass õiges kataloogis.

Mõnel juhul peate lisama õige faili tee ja suunake Java terminal õigesse asukohta. Kuna täidate käsku käsurea terminalist, ei tea arvuti, kus klass asub või kus see asub. Sihitud IDE-de puhul pole see probleem, kuna IDE hoiab kursorit praeguse töökataloogi suunas.

Mis on java süntaks?

Enne kui alustame tõrkeotsingut, miks terminal tagastab meile tõrke, kui proovite käivitada, peame kõigepealt vaatama käsu süntaksit. Kui te ei kasuta õiget süntaksit, seisate selle veaga paratamatult silmitsi.



Käsu tavaline süntaks on umbes selline:

java [...] [...]

Siin on käsurea valik, see on täielikult kvalifitseeritud Java klassi nimi ja see on käsurea argument, mis edastatakse teie rakendusele kogu paketi kompileerimisel.

Kehtiva käsu näide on:

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

Ülaltoodud käsk paneb java käsu täitma järgmised toimingud:

  • See otsib klassi kompileeritud versiooni com.acme.example.ListAppuals '.
  • Pärast otsimist laadib see klassi.
  • Järgmisena otsitakse klassi laadimise järel klassile põhimenüü, millel on kehtiv allkiri, modifikaatorid ja tagastustüüp. Põhiklassi näidis oleks umbes järgmine:
avalik staatiline void main (string [])
  • Meetodit nimetatakse stringidena argumentidega ‘kevin’, ‘nooled’ ja ‘bart’.

Kuidas parandada 'Põhiklassi ei õnnestunud leida või laadida'

1. lahendus: klassi nime argumendi kontrollimine

Kasutajate kõige tavalisem viga on see, et nad esitavad argumendina vale klassi nime (või õige klassi nimi on vale vorm). Kuna me deklareerime parameetreid käsureal, siis on väga tõenäoline, et edastate klassi nime argumendi vales vormis. Siin loetleme kõik võimalikud stsenaariumid, kus saate viga teha.

  • Kirjutamine a klassi lihtne nimi . Kui deklareerite klassi paketis, näiteks „com.acme.example”, peate kasutama klassi täielik nimi sealhulgas pakett Java käsus.
java com.acme.example.ListAppuals

selle asemel

java ListAppuals
  • Sa peaksid deklareerida klassinimi failinime või teenime deklareerimise asemel. Java ei tooda klassi, kui deklareerite sellele tee- / failinime. Vale kirjed sisaldavad järgmist:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Korpus tuleks arvestada. Java käsud on tõstutundlikud ja kui teete vea isegi ühes tähes, ei saa te põhiklassi laadida. Näide valed vead on:
java com.acme.example.listappuals
  • Sina ei peaks deklareerima allika failinimi . Nagu eelnevalt mainitud, peate klassi deklareerima ainult õiges klassinime vormingus. Näide veast on:
java ListAppuals.java
  • See viga ilmneb ka siis, kui teete a kirjutamisviga või unusta klassi nimi täielikult kirjutada .

Kui olete klassinime deklareerimisel teinud lohakaid vigu, parandage see kindlasti ja proovige seejärel programm käivitada.

2. lahendus: klassiraja kontrollimine

Kui olete klassinime õigesti deklareerinud, kuid teile kuvatakse ikkagi tõrge, on tõenäoline, et java käsk ei leidnud määratud klassinime teelt. Klassirada on tee, kust Java runtime otsib ressursside ja klassi faile. Klassirada saate hõlpsalt määrata kahe erineva käsu abil, nagu allpool näidatud:

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

Klassiraja kohta lisateabe saamiseks tutvuge järgmiste dokumentidega.

Java käskude dokumentatsioon

Klassiraja määramine

3. lahendus: kataloogi kontrollimine

Kui kuulutate kataloogi klassirajaks, vastab see alati nimeruumi juurtele. Näiteks kui „/ usr / local / acme / class” on klassirajal, otsib Java klassi „com.acme.example.Appuals”. See otsib klassi järgmise teenimega:

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

Seega, kui panete klassirajale järgmise aadressi, ei suuda Java klassi leida:

/ usr / local / acme / class / com / acme / näide

Samuti peaksite kontrollima oma alamkataloog ja vaadake, kas see vastab FQN-ile. Kui teie klasside FQN on „com.acme.example.Appuals“, otsib Java kataloogist „com / acme / example“ „Appuals.class”.

Oletame, et näide on järgmine:

  • Klass, mida soovite juhtida, on: com.acme.example.Appuals
  • The kogu faili tee on: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The praegune töökataloog on: / usr / local / acme / class / com / acme / example /

Siis kehtiksid järgmised stsenaariumid:

# vale, FQN on vajalik java Appuals # vale, praeguses töökataloogis java com.acme.example ei ole kausta `com / acme / example`. Rakendused # vale, sarnaselt ülaltoodud stsenaariumile java -classpath. com.acme.example.Appuals # OK; suhteline klassitee on määratud java -classpath ../../ .. com.acme.example.Appuals # OK; absoluutne klassitee on seatud java -classpath / usr / local / acme / class com.acme.example.Appuals

Märge: Klassirada peab hõlmama ka kõiki teisi (mitte süsteemseid) klasse, mida teie rakendused vajavad.

4. lahendus: klassi paketi kontrollimine

Kui teie puhul vastavad kõik ülaltoodud lahendused, peate veenduma, et lähtekood on õiges kaustas. Samuti olete õigesti deklareerinud pakend . Kui käivitate oma koodi IDE-ga, teavitab see teid tõenäoliselt probleemist. Kuna aga meie käitame seda käsuviibal, jääb viga märkamatuks ja saate arutlusel oleva klassi vea.

4 minutit loetud