Parandus: põhiklassi ei õnnestunud leida ega laadida

Viga ' Põhiklassi ei leitud ega laadita ' ilmneb Java-programmi käivitamiseks käsureale Java-programmi käsul java käsku kasutades, määratledes terminali klassi nime. Põhjus, miks see juhtub, on enamasti tingitud kasutaja programmeerimisveast klassi kuulutamisel.

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

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

Mis põhjustab tõrget 'Põhiklassi ei õnnestunud leida ega laadida'?

Teade 'Põhiklassi ei õnnestunud leida või laaditi' tähendab, et Java-mootori esimene samm klassi jõudmiseks täitmiseks ebaõnnestus. Java käsk ei suutnud klassi õiges kataloogis leida .

Mõnel juhul peate lisama õige failitee ja suunama Java terminali õigesse kohta. Kuna täidate käsku käsurealt, ei tea arvuti, kust see klass tuleb või kus see asub. Sihtotstarbelistes IDE-des pole see probleem, kuna IDE hoiab kursorit praeguse töötava kataloogi poole.

Mis on java süntaks?

Enne tõrkeotsingu alustamist, miks terminal tagastab meile käivitamisel tõrke, peame esmalt uurima käsu süntaksi. Kui te ei kasuta õiget süntaksit, seisab see tõrge paratamatult silmitsi.

Käsu tavaline süntaks on midagi sellist:

 java [...] [...] 

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

Kehtiva käsu näide on:

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

Ülaltoodud käsk paneb java käsu järgmisi toiminguid tegema:

  • See otsib klassi ' com.acme.example.ListAppuals ' kompileeritud versiooni.
  • Pärast otsimist laaditakse see klass üles.
  • Järgmisena otsitakse klassi laadimisel klassimeetodit peamise meetodi jaoks, millel on kehtiv allkiri, modifikaatorid ja tagastamise tüüp. Põhiklassi näidis oleks midagi sellist:
 avalik staatiline tühine pea (string []) 
  • Meetodit nimetatakse argumentidega 'kevin', 'nooled' ja 'bart' stringina [].

Kuidas parandada 'põhiklassi ei õnnestunud leida ega laadida'

1. lahendus: kontrollige klassi nime argumenti

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

  • Klassi lihtsa nime kirjutamine. Kui kuulutate klassi sellises paketis nagu 'com.acme.example', peate kasutama täielikku klassi nime koos paketiga Java käsus.
 java com.acme.example.ListAppuals 

selle asemel

 java ListAppuals 
  • Failinime või teekonna nime kuulutamise asemel peaksite kuulutama klassinime. Java ei tõmba klassi, kui kuulutate selle jaoks nime või failinime. Vale sisestus sisaldab järgmist:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Korpust tuleks arvestada. Java käsud on tõstutundlikud ja kui teete ühe tähega vea, ei saa te põhiklassi laadida. Valede vigade näide on:
 java com.acme.example.listappuals 
  • Te ei tohiks kuulutada lähtefaili nime . Nagu varem mainitud, peate klassi deklareerima ainult õiges täisnimes vormingus. Näide veast:
 java ListAppuals.java 
  • See tõrge ilmneb ka siis, kui teete trükivigu või unustate klassi nime täielikult kirjutada .

Kui olete klassinime deklareerimisel teinud lohakaid vigu, siis parandage see kindlasti ja proovige siis programmi käivitada.

Lahendus 2: klassitee kontrollimine

Kui olete klassinime õigesti kuulutanud, kuid teile kuvatakse ikkagi tõrge, võib java-käsk leida määratud klassi nime teelt. Klassitee on tee, kus Java käivitusaeg otsib ressursi- ja klassifaile. Klassitee saab hõlpsalt seada kahe erineva käsu abil, nagu allpool näidatud:

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

Klassitee kohta rohkem teavet saamiseks peaksite tutvuma järgmiste dokumentidega.

Java käsu dokumentatsioon

Klassitee määramine

Lahendus 3: kataloogi kontrollimine

Kui kuulutate kataloog klassiteeks, vastab see alati nimeruumi juurile. Näiteks kui klassirajal on „/ usr / local / acme / class”, otsib Java klassi „com.acme.example.Appuals”. See otsib klassi, millel on järgmine asukoha nimi:

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

Nii et sisuliselt, kui lisate järgmise klassiaadressi aadressile, ei suuda Java klassi leida:

 / usr / kohalik / acme / klassid / com / acme / näide 

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

Näite toomiseks oletame järgmise stsenaariumi:

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

Siis kehtivad järgmised stsenaariumid:

 # valesti, FQN on vajalik java Appuals # valesti, praeguses töökataloogis java com.acme.example.Appuals # pole kausta `com / acme / example`. Vale # on vale, sarnaselt ülaltoodud stsenaariumiga java -classpath. com.acme.example.Appuals # OK; suhteline klassitee on seatud java -classpath ../../ .. com.acme.example.Appuals # OK; absoluutne klassitee on seatud java -classpath / usr / local / acme / class com.acme.example.Appuals 

Märkus . Klassitee peab hõlmama ka kõiki teisi klasse (süsteemivälist), mida teie rakendused vajavad.

Lahendus 4: klassi paketi kontrollimine

Kui kõik ülaltoodud lahendused kehtivad teie puhul, peate veenduma, et lähtekood on paigutatud õigesse kausta. Samuti olete paketi õigesti deklareerinud. Kui kasutate oma koodi IDE-ga, teavitab see teid tõenäoliselt probleemist. Kuna aga me käitame seda käsureal, jääb viga märkamatuks ja te saate arutluse all oleva klassivea.

Huvitavad Artiklid