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

Napaka " Ne najdem ali naložim glavnega razreda " se pojavi pri uporabi ukaza java v ukaznem pozivu za zagon programa Java z navedbo imena razreda v terminalu. Razlog, zakaj se to zgodi, je največkrat posledica napake pri programiranju uporabnika med razglasitvijo razreda.

Ni bilo mogoče najti ali naložiti glavne vrstice - ukazne vrstice Java

Kot že omenjeno, tudi ta napaka večinoma ni povezana s sistemom in uporabnik naredi napako v več scenarijih, kot je prikazano spodaj. Preden začnemo naprej, predpostavljamo, da poznate programski jezik Java in kako deluje.

Kaj povzroča napako »Ne morem najti ali naložiti glavnega razreda« v Javi?

Sporočilo „Ne najdem ali naložim glavnega razreda“ pomeni, da prvi korak Java-motorja, ki je dobil razred za izvedbo, ni uspel. Ukaza java ni bilo mogoče najti razreda v pravilnem imeniku.

V nekaterih primerih morate dodati pravilno pot do datoteke in usmeriti javanski terminal na pravilno mesto. Ker ukaz izvajate iz terminala ukazne vrstice, računalnik ne ve, kje najti razred ali kje se nahaja. V ciljnih IDE-jih to ni problem, saj IDE ohranja kazalec, usmerjen proti trenutnemu delovnemu imeniku.

Kaj je sintaksa 'java'?

Preden začnemo odpravljati težave, zakaj nam terminal vrača napako pri poskusu izvršitve, moramo najprej pogledati skladnjo ukaza. Če ne uporabljate pravilne skladnje, se boste s to napako neizogibno soočili.

Običajna sintaksa ukaza je nekaj takega:

 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 sestavljen celoten paket.

Primer veljavnega ukaza je:

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

Z zgornjim ukazom bo ukaz java izvedel naslednje operacije:

  • Poiskal bo sestavljeno različico razreda ' com.acme.example.ListAppuals '.
  • Po iskanju bo naložila razred.
  • Nato bo razred, ko se naloži razred, poiskal "glavno" metodo z veljavnim podpisom, modifikatorji in vrnitvijo. Vzorčni glavni razred bi bil nekaj takega:
 javna statična neveljavna glavna (String []) 
  • Metoda bo imenovana z argumenti 'kevin', 'puščice' in 'bart' kot string [].

Kako popraviti "Ni mogoče najti ali naložiti glavnega razreda"

1. rešitev: Preverjanje argumenta imena razreda

Najpogostejša napaka, ki jo uporabniki storijo, je, da kot argument navedejo napačno ime razreda (ali pravilno ime razreda je napačna oblika). Ker v ukazni vrstici označujemo parametre, je zelo verjetno, da boste argument imena razreda posredovali v napačni obliki. Tukaj bomo navedli vse možne scenarije, v katerih se lahko zmotite.

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

namesto

 java ListAppuals 
  • Namesto razglasitve imena datoteke ali poti morate razglasiti ime razreda . Java ne pridobi razreda, če zanjo izjavite ime poti / datoteke. Napačni vnosi vključujejo naslednje:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Upoštevati je treba ohišje . Java ukazi so odvisni od velikih in malih črk, in če naredite napako celo ene črke, ne boste mogli naložiti glavnega razreda. Primer napačnih napak je:
 java com.acme.example.listappuals 
  • Ne bi smeli prijaviti imena izvorne datoteke . Kot že omenjeno, morate le razred razglasiti v pravilni obliki celotnega imena razreda. Primer napake je:
 java ListAppuals.java 
  • Do te napake bo prišlo tudi, če naredite napako pri tipkanju ali pozabite v celoti napisati ime razreda .

Če ste pri deklariranju imena razreda naredili kakršne koli napačne napake, se prepričajte, da ste to odpravili in poskusite zagnati program.

2. rešitev: Preverjanje razreda

Če ste ime razreda razglasili pravilno, vendar še vedno prikazuje napako, obstaja velika verjetnost, da ukaz java na poti ne bi mogel najti določenega imena razreda. Učna pot je pot, kjer Java izvajalno išče datoteke virov in razredov. Sprostitev lahko preprosto nastavite z dvema različnima ukazoma, kot je prikazano spodaj:

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

Če želite dobiti boljši vpogled v tečaj, si oglejte naslednje dokumente.

Dokumentacija ukaza Java

Nastavitev pouka

3. rešitev: Preverjanje imenika

Ko imenik razglasite za pot razreda, bo ta vedno ustrezal korenu imenskega prostora. Na primer, če je "/ usr / local / acme / class" na razredi poti, bo Java poiskala razred "com.acme.example.Appuals". Poiskal bo razred z naslednjim imenom poti:

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

Torej, če v razred predate naslednji naslov, Java ne bo mogla najti razreda:

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

Preverite tudi svoj podimenik in preverite, ali ustreza FQN. Če je FQN vaših razredov "com.acme.example.Appuals", bo Java v imeniku "com / acme / example" poiskala "Appuals.class".

Primer: predpostavimo naslednji scenarij:

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

Potem bi veljali naslednji scenariji:

 # narobe, FQN je potreben java Appuals # narobe, v trenutnem delovnem imeniku java com.acme.example.Appuals # narobe ni mape `com / acme / example`, # narobe, podobno kot zgoraj scenarij java -classpath. com.acme.example.Appuals # OK; nastavljena je relativna predavalna pot java -classpath ../../ .. com.acme.example.Appuals # OK; nastavljen je absolutni pouk, java -classpath / usr / local / acme / class com.acme.example.Appuals 

Opomba: Razred mora vključiti tudi vse druge razrede (nesistematične), ki jih potrebujejo vaše aplikacije.

4. rešitev: Preverjanje razreda

Če vse zgornje rešitve veljajo v vašem primeru, morate poskrbeti, da je vaša izvorna koda umeščena v pravilno mapo. Prav tako ste pravilno prijavili paket . Če kodo zaženete z IDE, vas bo verjetno obvestil o težavi. Vendar pa v našem primeru napaka ostane neopažena in napaka v razredu bo v obravnavani različici, saj jo izvajamo v ukaznem pozivu.

Zanimivi Članki