Nepodarilo sa nájsť alebo načítať hlavnú triedu Java? Tu je návod, ako to opraviť!

Nepodarilo sa nájsť alebo načítať hlavnú triedu Java? Tu je návod, ako to opraviť!

Ak sa vo vašom projekte Java stále bez zjavného dôvodu zobrazuje chyba, že sa hlavná trieda nenašla, nebojte sa, nie ste sami.





Ako jedna z najnepredvídateľnejších a najspontánnejších chýb, vďaka tendencii JVM (Java Virtual Machine) držať sa predvolenej triedy, je problém „hlavnej triedy nenájdený“ niečím, čo straší amatérov aj profesionálov.





Tento problém je však v skutočnosti menej zastrašujúci, ako sa zdá. Pokračujte v čítaní a zistite, ako sa tejto chyby môžete raz a navždy zbaviť.





Prečo nebola nájdená hlavná trieda?

Predtým, ako sa pokúsime porozumieť tomu, ako a prečo JVM nedokázalo nájsť hlavnú triedu, musíme porozumieť konceptu Classpath v Jave.

Čo je to Classpath?

Classpath je cesta k súboru, ktorú runtime prostredie Java hľadá pre triedy a ďalšie súbory zdrojov. Dá sa nastaviť pomocou -trieda pri spustení programu alebo nastavení systému CLASSPATH premenná prostredia.



Ako naznačuje názov, je to jednoducho cesta k súboru, kde súbor .trieda súbory nájdete v balíku alebo adresári JDK.

Keď JVM nedokáže nájsť hlavnú triedu, je to často preto, že hľadá zodpovedajúce .trieda súbory v nesprávnej triede. Spôsob, ako tento problém napraviť, je samozrejme manuálne zadať cestu k triede pomocou balíkov alebo zadaním cesty k triede.





V tomto mieste, ak si chcete osviežiť pamäť tried Java, pozrite sa na nášho sprievodcu pre vytváranie tried v Jave .

prečo mi na notebooku nefunguje klávesnica?

Používanie balíkov

Vytvorme triedu s názvom Test . Vložte ho do obalu s názvom testovací balík . Balíky sa v jazyku Java používajú na zoskupenie podobných tried alebo poskytnutie jedinečného priestoru názvov pre triedy.





V tomto jednoduchom príklade vám použitie balíka pomôže predstaviť si, ako funguje cesta k jazyku Java. Vo vašej aplikácii na správu súborov je balík reprezentovaný ako nezávislý priečinok.

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

Teraz otvorte nový terminál a uistite sa, že váš pracovný adresár je rovnaký ako ten, ktorý obsahuje priečinok s balíkom. Pracovný adresár môžete zmeniť pomocou CD príkaz na ľubovoľnom operačnom systéme.

Zostaviť Test.java spustením nasledujúceho príkazu:

package testPackage;
javac testPackage/Test.java

Skompilovaný binárny súbor (súbor .class) sa uloží do testPackage.

Ak chcete spustiť kompilovanú triedu, musíte do príkazového riadka napísať úplný názov triedy. Plne kvalifikovaný názov triedy Java odkazuje na jeho názov s predponou názvu balíka. V tomto prípade by to malo vyzerať takto:

java testPackage.Test

Tento spôsob volania súborov triedy tiež zaisťuje, že môžete volať spustiteľné súbory z rôznych balíkov z rovnakého pracovného adresára. Jediné, čo musíte urobiť, je zmeniť plne kvalifikovaný názov triedy.

V pokročilejších implementáciách odporúčame vytvoriť samostatné podpriečinky pre vaše triedy a zdrojové súbory, aby ste mohli lepšie spravovať súbory v rámci balíka.

Manuálna špecifikácia triedy cesty

Odporúčaný spôsob správy súborov java je vytvoriť samostatné adresáre pre zdrojové súbory a triedy. Ak pracujete na projekte, je pravdepodobné, že to už robíte.

Adresár so zdrojovými súbormi je obvykle označený ako src a ten so súbormi .class je označený ako triedy. Je to tiež spôsob, ako zabezpečiť, aby sa pravdepodobnosť, že JVM nenájde hlavnú triedu, výrazne znížila, a to vďaka správne štruktúrovanému adresáru.

Ak použijeme túto metódu, takto bude vyzerať štruktúra adresárov pred kompiláciou:

resetujte tento počítač, pri resetovaní počítača sa vyskytol problém
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Každá zarážka na vyššie uvedenom obrázku zodpovedá jednej úrovni hierarchie súborov, ktorou by sa mal váš projekt riadiť.

Aby ste to skompilovali, uistite sa, že váš pracovný adresár je myFolder. Teraz zadajte nasledujúci príkaz:

javac -d classes src/testPackage/Test.java

The .trieda spustiteľný súbor by mal byť uložený v myFolder/classes/testPackage . Štruktúra adresárov súborov teda vyzerá asi takto: | _+_ |

Spustiť .trieda súbor, spustite príkaz Java s plne kvalifikovaným názvom triedy a zadajte miestnu cestu triedy. Každá cesta je deklarovaná vzhľadom na pracovný adresár, čo je v tomto prípade myFolder.

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

Spustením tohto príkazu získate požadovaný výstup. Prečo je však na vyriešenie jednoduchej chyby potrebná taká veľká reorganizácia?

Význam organizovania súborov v Jave

Dôvodom, prečo je spustená položka „Nedá sa nájsť alebo načítať hlavnú triedu“, je to, že JVM nedokázala nájsť, kde je vaša .trieda ukladali sa súbory.

Najjednoduchší spôsob, ako vyriešiť túto chybu, je ovládať, kde sú súbory .class uložené, a výslovne povedať JVM, aby sa tam pozrela. To je možné tým, že zdrojové súbory a spustiteľné súbory organizujete oddelene a všetko ovládate z pracovného adresára.

Keď začnete pridávať konštrukty ako napr dedičnosť pre váš projekt sa zložitosť súborového systému musí mnohonásobne zvýšiť. V takýchto projektoch alebo dokonca v tých, kde sa vyžaduje použitie súborov JAR alebo vlastných knižníc, vám jednoduchá metóda oddeľovania a správy súborov môže ušetriť mnoho hodín odstraňovania problémov a ladenia.

Ak sa chcete dozvedieť viac o tom, ako classpath funguje v Jave, a o mnohých veciach, ktoré môžete ovládať pri spustení kódu, môžete sa tiež pozrieť na stránku Oracle podrobná a užívateľsky prívetivá referencia .

zdieľam zdieľam Tweet E -mail 10 najlepších projektov pre začiatočníkov pre nových programátorov

Chcete sa naučiť programovať, ale neviete, kde začať? Tieto projekty a návody pre začiatočníkov v oblasti programovania vás začnú.

ako odinštalovať aktualizácie v systéme Windows 10
Čítajte ďalej Súvisiace témy
  • Programovanie
  • Java
O autorovi Yash Chellani(10 publikovaných článkov)

Yash je ctižiadostivý študent informatiky, ktorý rád stavia veci a píše o všetkom technickom. Vo svojom voľnom čase rád hrá Squash, číta kópiu najnovšieho Murakami a loví drakov v Skyrime.

Viac od Yash Chellani

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber