Nelze najít nebo načíst hlavní třídu Java? Zde je návod, jak to opravit!

Nelze najít nebo načíst hlavní třídu Java? Zde je návod, jak to opravit!

Pokud se ve vašem projektu Java stále bez zjevného důvodu zobrazuje chyba hlavní třídy nenalezena, nebojte se, nejste sami.





Jako jedna z nejvíce nepředvídatelných a spontánních chyb, díky tendenci JVM (Java Virtual Machine) držet se výchozí cesty ke třídě, je problém „hlavní třídy nenalezen“ něčím, co straší amatéry i profesionály.





Ale tento problém je ve skutečnosti méně zastrašující, než se zdá. Pokračujte v čtení, abyste zjistili, jak se této chyby můžete jednou provždy zbavit.





Proč nebyla nalezena hlavní třída?

Než se pokusíme pochopit, jak a proč JVM nebyla schopna najít hlavní třídu, musíme porozumět konceptu Classpath v Javě.

Co je Classpath?

Classpath je cesta k souboru, kterou runtime prostředí Java vyhledává pro třídy a jiné soubory prostředků. Lze jej nastavit buď pomocí -classpath při spuštění programu nebo nastavení systému CLASSPATH proměnná prostředí.



Jak název napovídá, je to prostě cesta k souboru, kde .třída soubory lze nalézt v balíčku nebo adresáři JDK.

Když JVM nedokáže najít hlavní třídu, je to často proto, že hledá odpovídající .třída soubory ve špatné cestě ke třídě. Samozřejmě, že způsob, jak tento problém napravit, je ručně zadat cestu ke třídě pomocí balíčků nebo zadáním cesty ke třídě.





V tomto okamžiku, pokud byste chtěli obnovit paměť tříd Java, podívejte se do našeho průvodce pro vytváření tříd v Javě .

jak velká je instalace windows 10

Pomocí balíčků

Vytvořme třídu s názvem Test . Umístěte jej do balíčku s názvem testovací balíček . Balíčky se v Javě používají ke seskupování podobných tříd nebo k poskytování jedinečného prostoru jmen pro třídy.





V tomto jednoduchém příkladu vám použití balíčku pomůže představit si, jak funguje cesta ke třídě Java. Ve vaší aplikaci pro správu souborů je balíček reprezentován jako nezávislá složka.

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

Nyní otevřete nový terminál a ujistěte se, že váš pracovní adresář je stejný jako ten, který obsahuje složku balíčku. Pracovní adresář můžete změnit pomocí CD příkaz na libovolném operačním systému.

Kompilovat Test.java spuštěním následujícího příkazu:

package testPackage;
javac testPackage/Test.java

Tím se zkompilovaný binární soubor (soubor .class) uloží do testPackage.

Chcete -li spustit zkompilovanou třídu, musíte do příkazového řádku zadat plně kvalifikovaný název třídy. Plně kvalifikovaný název třídy Java odkazuje na její název s předponou názvu balíčku. V tomto případě by to mělo vypadat nějak takto:

java testPackage.Test

Tento způsob volání souborů třídy také zajišťuje, že můžete volat spustitelné soubory z různých balíčků ze stejného pracovního adresáře. Jediné, co musíte udělat, je upravit plně kvalifikovaný název třídy.

V pokročilejších implementacích doporučujeme vytvořit samostatné podsložky pro vaše třídy a zdrojové soubory, abyste mohli lépe spravovat soubory v balíčku.

Ručně určující třídu cesty

Doporučený způsob správy souborů Java je vytvoření samostatných adresářů pro zdrojové soubory a třídy. Pokud pracujete na projektu, je pravděpodobné, že to již děláte.

Obvykle je adresář se zdrojovými soubory označen jako src a ten se soubory .class je označen jako třídy. Toto je také způsob, jak zajistit, aby se pravděpodobnost, že JVM nenajde hlavní třídu, výrazně snížila díky správně strukturovanému adresáři.

Pokud použijeme tuto metodu, bude vypadat struktura adresářů před kompilací:

jak kopírovat e -mailové adresy z gmailu
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Každá odrážka na výše uvedeném obrázku odpovídá jedné úrovni hierarchie souborů, kterou by měl váš projekt dodržovat.

Chcete -li to zkompilovat, ujistěte se, že váš pracovní adresář je myFolder. Nyní zadejte následující příkaz:

javac -d classes src/testPackage/Test.java

The .třída spustitelný soubor by měl být uložen v myFolder/classes/testPackage . Struktura adresářů souborů tedy vypadá nějak takto: | _+_ |

Chcete -li spustit .třída soubor, spusťte příkaz Java s plně kvalifikovaným názvem třídy a zadejte místní cestu ke třídě. Každá cesta je deklarována vzhledem k pracovnímu adresáři, což je v tomto případě myFolder.

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

Spuštěním tohoto příkazu byste měli získat požadovaný výstup. Proč je ale tolik reorganizace nutné k vyřešení jednoduché chyby?

Význam organizace souborů v Javě

Hlavním důvodem, proč je vyvolána „Nelze najít nebo načíst hlavní třídu“, je to, že JVM nebyla schopna zjistit, kde je vaše .třída ukládaly se soubory.

Nejjednodušší způsob, jak tuto chybu vyřešit, je řídit, kde jsou uloženy soubory .class, a výslovně sdělit JVM, aby se tam podívala. To je možné tím, že budete své zdrojové soubory a spustitelné soubory organizovat samostatně a vše ovládat z pracovního adresáře.

Když začnete přidávat konstrukty jako dědictví u vašeho projektu se složitost souborového systému musí mnohonásobně zvýšit. V takových projektech nebo dokonce v těch, kde je vyžadováno použití souborů JAR nebo vlastních knihoven, vám jednoduchá praxe oddělení a správy souborů může ušetřit nespočet hodin odstraňování problémů a ladění.

Chcete -li si přečíst více o tom, jak classpath funguje v Javě, a o mnoha věcech, které můžete ovládat při spouštění kódu, můžete se také podívat na Oracle podrobná a uživatelsky přívětivá reference .

Podíl Podíl tweet E-mailem 10 nejlepších projektů pro začátečníky pro nové programátory

Chcete se naučit programovat, ale nevíte, kde začít? Tyto začátečníky programovací projekty a návody vás odstartují.

velikost stránkovacího souboru pro RAM 8 GB v systému Windows 10
Číst dále Související témata
  • Programování
  • Jáva
O autorovi Yash Chellani(10 článků zveřejněno)

Yash je aspirující student informatiky, který rád staví věci a píše o technologiích všeho. Ve svém volném čase rád hraje Squash, čte kopii nejnovějšího Murakami a loví draky ve Skyrimu.

Více od Yash Chellani

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru