Jave glavnega razreda Java ni bilo mogoče najti ali naložiti? Evo, kako to popraviti!

Jave glavnega razreda Java ni bilo mogoče najti ali naložiti? Evo, kako to popraviti!

Če v vašem projektu Java brez očitnega razloga vedno znova prihaja do napake glavnega razreda, ki ni bil najden, ne skrbite, niste sami.





Kot ena najbolj nepredvidljivih in spontanih napak, zahvaljujoč težnji JVM (Java Virtual Machine), da se drži privzete poti, je vprašanje 'glavnega razreda ni mogoče najti' nekaj, kar preganja ljubitelje in profesionalce.





Toda to vprašanje je pravzaprav manj zastrašujoče, kot se zdi. Preberite, če želite izvedeti, kako se lahko enkrat za vselej znebite te napake.





Zakaj glavnega razreda ni bilo mogoče najti?

Preden poskušamo razumeti, kako in zakaj JVM ni uspel najti glavnega razreda, moramo razumeti pojem Razredna pot v Javi.

Kaj je Classpath?

Pot razreda je pot datoteke, ki jo izvajalno okolje Java išče za razrede in druge datoteke virov. Nastavite ga lahko z uporabo -razredna pot možnost pri izvajanju programa ali nastavitvi sistema CLASSPATH spremenljivka okolja.



Kot že ime pove, gre preprosto za pot do datoteke, kjer je .razred Datoteke najdete v paketu ali imeniku JDK.

Ko JVM ne more najti glavnega razreda, je to pogosto zato, ker išče ustreznega .razred datoteke na napačni poti razreda. Seveda lahko to težavo odpravite tako, da ročno določite pot razreda, bodisi z uporabo paketov bodisi z navedbo poti razreda.





Če želite osvežiti spomin na razrede Java, si oglejte naš vodnik ustvarjanje razredov v Javi .

najboljši način za skeniranje veliko fotografij

Uporaba paketov

Ustvarimo razred z imenom Test . Dajte ga v paket, imenovan testPackage . Paketi se v Javi uporabljajo za združevanje podobnih razredov ali zagotavljanje edinstvenega imenskega prostora za razrede.





V tem preprostem primeru vam bo uporaba paketa pomagala vizualizirati delovanje poti razreda Java. V aplikaciji za upravljanje datotek je paket predstavljen kot neodvisna mapa.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Zdaj odprite nov terminal in se prepričajte, da je vaš delovni imenik enak tistemu, ki vsebuje mapo paketov. Delovni imenik lahko spremenite z CD ukaz v katerem koli operacijskem sistemu.

Prevedi Test.java z zagonom naslednjega ukaza:

package testPackage;
javac testPackage/Test.java

To bo shranilo prevedeno binarno datoteko (datoteko .class) v testPackage.

Če želite zagnati prevedeni razred, morate v ukazno vrstico vnesti polno ime razreda. Popolno ime razreda Java se nanaša na njegovo ime s predpono imena paketa. V tem primeru bi to moralo izgledati nekako takole:

java testPackage.Test

Ta način klicanja datotek razreda zagotavlja tudi, da lahko kličete izvedljive datoteke iz različnih paketov iz istega delovnega imenika. Vse, kar morate storiti, je, da spremenite polno ime razreda.

Pri naprednejših izvedbah priporočamo, da ustvarite ločene podmape za razrede in izvorne datoteke za boljše upravljanje datotek v paketu.

Ročno določanje poti razreda

Priporočen način upravljanja datotek java je ustvarjanje ločenih imenikov za izvorne datoteke in razrede. Če delate na projektu, verjetno to že delate.

Običajno je imenik z izvornimi datotekami označen kot src in tisti z datotekami .class je označen kot razredov. To je tudi način, da se zaradi ustrezno strukturiranega imenika znatno zmanjša verjetnost, da JVM ne najde glavnega razreda.

Če uporabimo to metodo, bo tako izgledala imeniška struktura pred sestavljanjem:

kje lahko natisnem nekaj brezplačno
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Vsaka alinea na zgornji sliki ustreza eni ravni hierarhije datotek, ki bi ji moral slediti vaš projekt.

Če želite to sestaviti, se prepričajte, da je vaš delovni imenik myFolder. Zdaj vnesite naslednji ukaz:

javac -d classes src/testPackage/Test.java

The .razred izvedljivo datoteko je treba shraniti v myFolder/classes/testPackage . Skladno s tem je struktura imenika datotek videti nekako takole: | _+_ |

Za zagon .razred datoteko, zaženite ukaz Java s polno ime razreda in podajte lokalno pot razreda. Vsaka pot je deklarirana glede na delovni imenik, ki je v tem primeru myFolder.

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Če zaženete ta ukaz, boste dobili želeni izhod. Toda zakaj je toliko reorganizacije potrebno za rešitev preproste napake?

Pomen organiziranja datotek v Javi

Razlog, zakaj je bil vržen 'Ni bilo mogoče najti ali naložiti glavnega razreda', je, ker JVM ni mogel najti, kje .razred datoteke so bile shranjene.

Najlažji način za odpravo te napake je nadzor nad tem, kje so shranjene datoteke .class, in izrecno povejte JVM -ju, naj poišče tja. To je mogoče z ločenim organiziranjem izvornih datotek in izvedljivih datotek ter nadzorom vsega iz delovnega imenika.

Ko začnete dodajati konstrukte, kot so dedovanje Za vaš projekt se bo kompleksnost datotečnega sistema večkrat povečala. V takšnih projektih ali celo v tistih, kjer je potrebna uporaba datotek JAR ali knjižnic po meri, lahko preprosta praksa ločevanja in upravljanja datotek prihrani neštete ure odpravljanja težav in odpravljanja napak.

Če želite prebrati več o tem, kako classpath deluje v Javi, in številnih stvareh, ki jih lahko nadzirate pri izvajanju kode, si oglejte tudi Oracle podrobna in uporabniku prijazna referenca .

Deliti Deliti Cvrkutati E-naslov 10 najboljših začetnih projektov za nove programerje

Bi se radi naučili programiranja, pa ne veste, kje začeti? Ti začetniški programi in vaje vas bodo začeli.

najboljša brezplačna aplikacija za pošiljanje sporočil in klice
Preberite Naprej Sorodne teme
  • Programiranje
  • Java
O avtorju Yash Chellani(10 objavljenih člankov)

Yash je ambiciozen študent računalništva, ki rad gradi stvari in piše o vseh stvareh tehnologije. V prostem času se rad igra Squash -a, bere kopijo najnovejšega Murakamija in lovi zmaje v Skyrimu.

Več od Yash Chellani

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite