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



Vyzkoušejte Náš Nástroj Pro Odstranění Problémů

Chyba ' Nelze najít nebo načíst hlavní třídu „Nastane, když použijete příkaz java v příkazovém řádku ke spuštění programu Java zadáním názvu třídy v terminálu. Důvod, proč k tomu dojde, je většinou způsoben chybou programování uživatele při deklaraci třídy.



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

Nelze najít nebo načíst hlavní třídu - příkazový řádek 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. The příkaz java nebyl schopen lokalizovat třída ve správném adresáři.

V některých případech musíte přidat správná cesta k souboru a nasměrujte terminál Java na správné místo. 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 potíže, 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.
  • Po načtení třídy bude třída prohledána metoda „main“ 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, kterou uživatelé dělají, je, že jako argument uvedou nesprávný název třídy (nebo nesprávný název třídy je nesprávná forma). Jelikož deklarujeme parametry na příkazovém řádku, je vysoce pravděpodobné, že předáte argument názvu třídy ve špatné formě. Zde uvádíme všechny možné scénáře, kde můžete udělat chybu.

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

namísto

java ListAppuals
  • Měl by jsi deklarovat název třídy místo deklarace názvu souboru nebo cesty. Java nenačte třídu, pokud pro ni deklarujete cestu / název souboru. Nesprávný položky zahrnují následující:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Kryt je třeba vzít v úvahu. 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říklad nesprávné chyby jsou:
java com.acme.example.listappuals
  • Vy neměl by prohlásit zdrojový 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é, pokud provedete a chyba při psaní nebo zapomeňte úplně 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ů. Například pokud je „/ usr / local / acme / classes“ na cestě ke třídě, 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 třídy cestu následující adresu, Java nebude moci třídu najít:

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

Měli byste také zkontrolovat podadresář a zjistěte, 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 uvedli příklad, předpokládejme následující scénář:

  • Třída, kterou chcete spustit, je: com.acme.example.Appuals
  • The úplná cesta k souboru je: /usr/local/acme/classes/com/acme/example/Appuals.class
  • The aktuální pracovní adresář je: / usr / local / acme / classes / com / acme / 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 # špatně, podobně jako výše uvedený scénář java -classpath není žádná složka `com / acme / example`. 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: Classpath 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ík . 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 diskuse o chybě třídy.

4 minuty čtení