Popravek: glavnega razreda ni bilo mogoče najti ali naložiti



Preizkusite Naš Instrument Za Odpravo Težav

Napaka „ Ni bilo mogoče najti ali naložiti glavnega razreda ’Se zgodi, ko v ukaznem pozivu z ukazom java zaženete program Java z določitvijo imena razreda v terminalu. Razlog, da se to zgodi, je predvsem v programski napaki uporabnika med razglasitvijo razreda.



V ukazni vrstici Java ni bilo mogoče najti ali naložiti glavnega razreda

Nisem mogel najti ali naložiti glavnega razreda - ukazne vrstice Java



Kot že omenjeno, ta napaka večinoma ni povezana s sistemom in uporabnik v več scenarijih naredi napako, kot je prikazano spodaj. Preden nadaljujemo, predpostavimo, da imate osnovno znanje programskega jezika Java in kako deluje.



Kaj povzroča napako 'Ni bilo mogoče najti ali naložiti glavnega razreda' v Javi?

Sporočilo „Ne morem najti ali naložiti glavnega razreda“ pomeni, da prvi korak mehanizma Java, ki je prevzel razred za izvedbo, ni uspel. The ukaz java ni mogel poiščite razred v pravilnem imeniku.

V nekaterih primerih morate dodati pravilna pot do datoteke in usmerite terminal Java na pravilno mesto. Ker izvajate ukaz s terminala ukazne vrstice, računalnik ne ve, kje najti razred ali kje se nahaja. V ciljanih IDE-jih to ni težava, saj IDE ohrani kazalec, ki kaže na trenutni delovni imenik.

Kaj je sintaksa 'java'?

Preden začnemo odpravljati težave, zakaj nam terminal poskuša pri izvedbi vrniti napako, moramo najprej pogledati sintakso ukaza. Če ne uporabljate pravilne skladnje, se boste s to napako neizogibno soočili.



Običajna sintaksa ukaza je nekako takšna:

java [...] [...]

Tu je možnost ukazne vrstice, je popolnoma kvalificirano ime razreda Java in je argument ukazne vrstice, ki se posreduje vaši aplikaciji, ko je celoten paket preveden.

Primer veljavnega ukaza je:

java -Xmx100m com.acme.example.ListAppuals kevin puščice bart

Z zgornjim ukazom bo ukaz java izvedel naslednje operacije:

  • Iskal bo prevedeno različico razreda ‘ com.acme.example.ListAppuals '.
  • Po iskanju bo naložil razred.
  • Nato, ko se razred naloži, se v razredu poišče metoda ‘main’ z veljavnim podpisom, modifikatorji in vrsto vrnitve. Vzorec glavnega razreda bi bil nekaj takega:
public static void main (String [])
  • Metoda bo poklicana z argumenti 'kevin', 'puščice' in 'bart' kot niz [].

Kako popraviti 'Ne morem najti ali naložiti glavnega razreda'

Rešitev 1: Preverjanje argumenta imena razreda

Najpogostejša napaka uporabnikov je ta, da kot argument navedejo napačno ime razreda (ali pa je pravilno ime razreda napačna oblika). Ker v ukazni vrstici deklariramo parametre, je zelo verjetno, da boste argument imena razreda predali v napačni obliki. Tu bomo našteli vse možne scenarije, v katerih lahko naredite napako.

  • Pisanje a preprosto ime razreda . Če razred prijavite v paketu, kot je 'com.acme.example', morate uporabiti polno ime predavanja vključno s paketom v ukazu Java.
java com.acme.example.ListAppuals

namesto

java ListAppuals
  • Moral bi prijavi ime razreda namesto da bi razglasili ime datoteke ali ime poti. Java ne pridobi razreda, če zanj deklarirate ime / datoteko. Napačno vnosi vključujejo naslednje:
java listAppuals.class java com / acme / example / ListAppuals.class
  • Ohišje je treba upoštevati. Ukazi Java razlikujejo med velikimi in malimi črkami in če naredite napako niti ene črke, ne boste mogli naložiti glavnega razreda. Primer napačne napake so:
java com.acme.example.listappuals
  • Ti ne bi smel izjavi ime izvorne datoteke . Kot smo že omenili, morate razred prijaviti samo v pravilni obliki celotnega imena razreda. Primer napake je:
java ListAppuals.java
  • Do te napake bo prišlo tudi, če naredite a tipkarska napaka ali pozabite v celoti napisati ime predavanja .

Če ste pri razglasitvi imena razreda naredili kakšne površne napake, ga popravite in poskusite zagnati program.

Rešitev 2: Preverjanje učne poti

Če ste pravilno razglasili ime razreda, vendar se vam napaka še vedno prikaže, obstaja verjetnost, da ukaz java na poti ni mogel najti navedenega imena razreda. Pot razreda je pot, kjer izvajalno okolje Java išče datoteke virov in razredov. Pot razreda lahko enostavno nastavite z dvema različnima ukazoma, kot je prikazano spodaj:

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

Če želite več vpogleda v učno pot, si oglejte naslednje dokumente.

Dokumentacija o ukazu Java

Nastavitev poti predavanja

3. rešitev: Preverjanje imenika

Ko deklarirate imenik kot pot do razreda, bo vedno ustrezal korenu imenskega prostora. Če je na primer »/ usr / local / acme / classes« na poti do razreda, bo Java iskala razred »com.acme.example.Appuals«. Iskal bo razred z naslednjim imenom poti:

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

Torej, če v razredu vstavite naslednji naslov, Java ne bo mogla najti razreda:

/ usr / local / acme / classes / com / acme / example

Preverite tudi svoje podimenik in preverite, ali se ujema z FQN. Če je FQN za vaše razrede »com.acme.example.Appuals«, bo Java v imeniku »com / acme / example« poiskala »Appuals.class«.

Za primer naj predpostavimo naslednji scenarij:

  • Razred, ki ga želite zagnati, je: com.acme.example.Appuals
  • The celotna pot datoteke je: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The trenutni delovni imenik je: / usr / local / acme / classes / com / acme / example /

Potem bi veljali naslednji scenariji:

# narobe, FQN je potreben java Appuals # narobe, v trenutnem delovnem imeniku java com.acme.example ni mape `com / acme / example`.Appuals # narobe, podobno kot v zgornjem scenariju java -classpath. com.acme.example.Appuals # OK; nastavljena je relativna pot razreda java -classpath ../../ .. com.acme.example.Appuals # OK; nastavljena je absolutna pot do razreda java -classpath / usr / local / acme / classes com.acme.example.Appuals

Opomba: Pot učilnic mora vključevati tudi vse druge razrede (nesistemske), ki jih potrebujejo vaše aplikacije.

4. rešitev: Preverjanje paketa razredov

Če vse zgornje rešitve v vašem primeru držijo, se prepričajte, da je vaša izvorna koda postavljena v pravilno mapo. Prav tako ste pravilno razglasili paket . Če zaženete kodo z IDE, vas bo verjetno obvestil o težavi. Ker pa jo v našem primeru izvajamo v ukaznem pozivu, napaka ostane neopažena in dobili boste obravnavano napako razreda.

4 minute branja