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

Napaka " Ne morem najti ali naložiti glavnega razreda " se pojavi, ko v ukaznem pozivu za uvedbo programa Java uporabim ukaz java z navedbo imena razreda v terminalu. Razlog za to je predvsem uporabnikova programska napaka med razglasitvijo razreda.

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

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 »Ni bilo mogoče najti ali naložiti glavnega razreda« pomeni, da prvi korak mehanizma Java, ki je prevzel razred za izvedbo, ni uspel. Ukaz java ni mogel najti razreda v pravilnem imeniku.

V nekaterih primerih morate dodati pravilno pot datoteke in usmeriti 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 'Ni bilo mogoče 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 velika verjetnost, da boste argument razreda predali v napačni obliki. Tu bomo našteli vse možne scenarije, v katerih lahko naredite napako.

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

namesto

java ListAppuals
  • Namesto deklariranja imena datoteke ali poti bi morali prijaviti ime razreda . Java ne pridobi razreda, če zanj deklarirate ime poti / datoteke. Napačni vnosi vključujejo naslednje:
java listAppuals.class java com / acme / example / ListAppuals.class
  • Upoštevati je treba ohišje . Ukazi Java razlikujejo med velikimi in malimi črkami in če zmotite celo eno črko, glavnega razreda ne boste mogli naložiti. Primer napačnih napak so:
java com.acme.example.listappuals
  • Ne smete prijaviti imena 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 pride tudi, če naredite tipkarsko napako ali pozabite v celoti napisati ime predavanja .

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

Rešitev 2: Preverjanje učne poti

Če ste ime razreda razglasili pravilno, vendar se vam napaka še vedno prikazuje, 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 svoj podimenik in preverite, ali se ujema z FQN. Če je FQN za vaše razrede "com.acme.example.Appuals", bo Java poiskala "Appuals.class" v imeniku "com / acme / example".

Za primer navedimo naslednji scenarij:

  • Razred, ki ga želite zagnati, je: com.acme.example.Appuals
  • Polno datoteka pot je: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Trenutni delovni imenik je: / usr / local / Vrhunec / razredi / com / Vrhunec / primer /

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 razreda java -classpath / usr / local / acme / classes com.acme.example.Appuals

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

Rešitev 4: Preverjanje paketa razredov

Če vse zgornje rešitve v vašem primeru držijo, se prepričajte, da je vaša izvorna koda v pravilni mapi. Paket ste tudi pravilno prijavili . Č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.

Priporočena

Popravek: Minecraft se ne odziva
Kaj je aplikacija za registracijo naprave za digitalni TV sprejemnik in jo je treba odstraniti?
Kaj je FileRepMalware in ali ga morate odstraniti