Oprava: Nelze najít nebo načíst hlavní třídu

Při použití příkazu java v příkazovém řádku ke spuštění programu Java zadáním názvu třídy v terminálu dojde k chybě „ Nelze najít nebo načíst hlavní třídu “. Důvod, proč se to stane, je většinou kvůli programovací chybě uživatele při deklaraci třídy.

Nelze najít nebo načíst hlavní třídu v příkazovém řádku Java

Jak již bylo zmíněno dříve, tato chyba většinou nesouvisí se systémem a uživatel udělá chybu v několika scénářích, jak je uvedeno níže. Před dalším krokem předpokládáme, že máte základní znalosti programovacího jazyka Java a jeho fungování.

Co způsobuje chybu „Nelze najít nebo načíst hlavní třídu“ v Javě?

Zpráva „Nelze najít nebo načíst hlavní třídu“ znamená, že první krok modulu Java načítajícího třídu k provedení selhal. Příkaz java nebyl schopen najít třídu ve správném adresáři.

V některých případech musíte přidat správnou cestu k souboru a nasměrovat terminál Java do správného umístění. Vzhledem k tomu, že provádíte příkaz z terminálu příkazového řádku, počítač neví, kde se třída nachází nebo kde se nachází. V cílených IDE to není problém, protože IDE udržuje ukazatel směřující k aktuálnímu pracovnímu adresáři.

Co je syntaxe „Java“?

Než začneme odstraňovat problémy, proč nám terminál při pokusu o provedení vrací chybu, musíme se nejprve podívat na syntaxi příkazu. Pokud nepoužíváte správnou syntaxi, budete této chybě nevyhnutelně čelit.

Normální syntaxe příkazu je asi taková:

 java [...] [...]

Zde je možnost příkazového řádku, je plně kvalifikovaný název třídy Java a je argumentem příkazového řádku, který je předán vaší aplikaci při kompilaci celého balíčku.

Příklad platného příkazu je:

java -Xmx100m com.acme.example.ListAppuals kevin šipky bart

Výše uvedený příkaz způsobí, že příkaz java provede následující operace:

  • Bude vyhledávat kompilovanou verzi třídy „ com.acme.example.ListAppuals “.
  • Po prohledání načte třídu.
  • Dále, když je třída načtena, bude třída vyhledána metoda 'hlavní' s platným podpisem, modifikátory a návratovým typem. Ukázková hlavní třída by byla něco jako:
public static void main (String [])
  • Metoda bude volána s argumenty „kevin“, „šipky“ a „bart“ jako řetězec [].

Jak opravit „Nelze najít nebo načíst hlavní třídu“

Řešení 1: Kontrola argumentu názvu třídy

Nejčastější chybou uživatelů je, že jako argument uvedou nesprávný název třídy (nebo nesprávný název třídy je nesprávná forma). Protože deklarujeme parametry na příkazovém řádku, je vysoce pravděpodobné, že předáte argument název třídy ve špatné formě. Zde uvádíme všechny možné scénáře, kde můžete udělat chybu.

  • Psaní jednoduchého názvu třídy . Pokud deklarujete třídu v balíčku, například „com.acme.example“, musíte v příkazu Java použít celý název třídy včetně balíčku.
java com.acme.example.ListAppuals

namísto

java ListAppuals
  • Místo deklarace názvu souboru nebo cesty byste měli deklarovat název třídy. Java nenačte třídu, pokud pro ni deklarujete cestu / název souboru. Mezi nesprávné položky patří následující:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Je třeba vzít v úvahu pouzdro . V příkazech jazyka Java se rozlišují velká a malá písmena a pokud uděláte chybu i v případě jednoho písmene, nebudete moci načíst hlavní třídu. Příkladem nesprávných chyb jsou:
java com.acme.example.listappuals
  • Byste neměli deklarovat zdroj název souboru . Jak již bylo zmíněno dříve, stačí deklarovat třídu ve správném formátu celého názvu třídy. Příklad chyby je:
java ListAppuals.java
  • K této chybě dojde také v případě, že uděláte chybu při psaní nebo úplně zapomenete napsat název třídy .

Pokud jste při deklaraci názvu třídy udělali nedbalé chyby, ujistěte se, že je opravíte a poté zkuste spustit program.

Řešení 2: Kontrola cesty ke třídě

Pokud jste správně zadali název třídy, ale stále se vám zobrazuje chyba, je pravděpodobné, že příkaz java nemohl najít zadaný název třídy na cestě. Classpath je cesta, kde modul runtime Java hledá soubory prostředků a tříd. Classpath můžete snadno nastavit pomocí dvou různých příkazů, jak je znázorněno níže:

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

Chcete-li získat podrobnější informace o třídě, měli byste se podívat na následující dokumenty.

Dokumentace příkazů Java

Nastavení cesty ke třídě

Řešení 3: Kontrola adresáře

Když deklarujete adresář jako cestu ke třídě, bude vždy odpovídat kořenu oboru názvů. Pokud je například na cestě ke třídě „/ usr / local / acme / classes“, vyhledá Java třídu „com.acme.example.Appuals“. Bude hledat třídu s následujícím názvem cesty:

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

V podstatě tedy, pokud vložíte do classpath následující adresu, Java nebude moci třídu najít:

/ usr / local / acme / classes / com / acme / příklad

Měli byste také zkontrolovat svůj podadresář a zjistit, zda odpovídá FQN. Pokud je vaše třída FQN „com.acme.example.Appuals“, pak Java vyhledá „Appuals.class“ v adresáři „com / acme / example“.

Abychom vám poskytli příklad, předpokládejme následující scénář:

  • Třída, kterou chcete spustit, je: com.acme.example.Appuals
  • Plná cesta k souboru je: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Aktuální pracovní adresář je: / usr / local / ABC / třídy / com / ABC / example /

Pak by platily následující scénáře:

# špatně, FQN je potřeba java Appuals # špatně, v aktuálním pracovním adresáři java com.acme.example.Appuals # není obdoba výše uvedeného scénáře java -classpath. com.acme.example.Appuals # OK; je nastavena relativní cesta ke třídě java -classpath ../../ .. com.acme.example.Appuals # OK; je nastavena absolutní cesta ke třídě java -classpath / usr / local / acme / classes com.acme.example.Appuals

Poznámka: Cesta ke třídě musí zahrnovat také všechny ostatní třídy (nesystémové), které vaše aplikace potřebují.

Řešení 4: Kontrola balíčku třídy

Pokud všechna výše uvedená řešení ve vašem případě platí, musíte se ujistit, že je váš zdrojový kód umístěn ve správné složce. Také jste správně deklarovali balíček . Pokud spustíte svůj kód s IDE, bude vás pravděpodobně informovat o problému. V našem případě, protože jej spouštíme v příkazovém řádku, však chyba zůstane bez povšimnutí a zobrazí se chyba třídy v diskusi.

Doporučená

Oprava: Minecraft neodpovídá
Co je aplikace pro registraci zařízení digitální televize a měla by být odstraněna?
Co je FileRepMalware a měli byste jej odebrat