Poprawka: nie można znaleźć lub załadować klasy głównej

Błąd „ Nie można znaleźć lub załadować głównej klasy ” występuje podczas używania polecenia java w wierszu polecenia do uruchomienia programu Java poprzez określenie nazwy klasy w terminalu. Powodem tego jest głównie błąd programistyczny użytkownika podczas deklarowania klasy.

Nie można znaleźć lub załadować głównej linii poleceń - Java

Jak wspomniano wcześniej, ten błąd w większości nie jest związany z systemem, a użytkownik popełnia błąd w kilku scenariuszach, jak pokazano poniżej. Zanim przejdziemy dalej, zakładamy, że masz podstawową wiedzę na temat języka programowania Java i jego działania.

Co powoduje błąd „Nie można znaleźć lub załadować klasy głównej” w Javie?

Komunikat „Nie można znaleźć lub załadować klasy głównej” oznacza, że ​​pierwszy krok silnika Java pobierania klasy do wykonania nie powiódł się. Komenda java nie mogła zlokalizować klasy we właściwym katalogu.

W niektórych przypadkach musisz dodać poprawną ścieżkę do pliku i skierować terminal Java w odpowiednie miejsce. Ponieważ wykonuje się polecenie z terminala wiersza poleceń, komputer nie wie, gdzie znajduje się klasa ani gdzie się znajduje. W docelowych IDE nie stanowi to problemu, ponieważ IDE utrzymuje wskaźnik wskazujący bieżący katalog roboczy.

Co to jest składnia „java”?

Zanim zaczniemy rozwiązywać problemy, dlaczego terminal zwraca nam błąd podczas próby wykonania, najpierw musimy spojrzeć na składnię polecenia. Jeśli nie używasz poprawnej składni, nieuchronnie napotkasz ten błąd.

Normalna składnia polecenia wygląda mniej więcej tak:

 java [...] [...] 

Oto opcja wiersza poleceń, pełna nazwa klasy Java i argument wiersza poleceń, który jest przekazywany do aplikacji podczas kompilacji całego pakietu.

Przykład prawidłowego polecenia to:

 java -Xmx100m com.acme.example.ListAppuals strzałki kevin bart 

Powyższe polecenie spowoduje, że polecenie java wykona następujące operacje:

  • Wyszuka skompilowaną wersję klasy „ com.acme.example.ListAppuals ”.
  • Po przeszukaniu załaduje klasę.
  • Następnie, gdy klasa zostanie załadowana, zostanie wyszukana metoda „główna” z poprawnym podpisem, modyfikatorami i typem zwrotu. Przykładowa główna klasa mogłaby wyglądać następująco:
 public static void main (String []) 
  • Metoda zostanie wywołana z argumentami „kevin”, „strzałki” i „bart” jako ciągiem [].

Jak naprawić błąd „Nie można znaleźć lub załadować klasy głównej”

Rozwiązanie 1: Sprawdzanie argumentu nazwy klasy

Najczęstszym błędem popełnianym przez użytkowników jest to, że podają jako argument niewłaściwą nazwę klasy (lub poprawna nazwa klasy jest niewłaściwą formą). Ponieważ deklarujemy parametry w wierszu poleceń, bardzo prawdopodobne jest, że przekażesz argument nazwy klasy w niewłaściwej formie. Tutaj wymienimy wszystkie możliwe scenariusze, w których możesz popełnić błąd.

  • Pisanie prostej nazwy klasy . Jeśli deklarujesz klasę w pakiecie, takim jak „com.acme.example”, musisz użyć pełnej nazwy klasy wraz z pakietem w poleceniu Java.
 java com.acme.example.ListAppuals 

zamiast

 java ListAppuals 
  • Powinieneś zadeklarować nazwę klasy zamiast deklarować nazwę pliku lub ścieżkę. Java nie pobiera klasy, jeśli zadeklarujesz dla niej ścieżkę / nazwę pliku. Niepoprawne wpisy obejmują:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • Należy wziąć pod uwagę obudowę. W poleceniach Java rozróżniana jest wielkość liter i jeśli popełnisz błąd nawet jednej litery, nie będziesz w stanie załadować klasy głównej. Przykładem niepoprawnych błędów są:
 java com.acme.example.listappuals 
  • Nie należy deklarować źródłowej nazwy pliku . Jak wspomniano wcześniej, wystarczy zadeklarować klasę we właściwym formacie pełnej nazwy klasy. Przykładem błędu jest:
 java ListAppuals.java 
  • Ten błąd wystąpi również, jeśli popełnisz błąd w pisowni lub zapomnisz całkowicie wpisać nazwę klasy .

Jeśli popełniłeś jakieś niechlujne błędy podczas deklarowania nazwy klasy, upewnij się, że ją naprawiłeś, a następnie spróbuj uruchomić program.

Rozwiązanie 2: Sprawdzanie ścieżki klasy

Jeśli poprawnie zadeklarowałeś nazwę klasy, ale nadal pojawia się błąd, istnieje prawdopodobieństwo, że komenda java nie może znaleźć określonej nazwy klasy na ścieżce. Ścieżka klasy to ścieżka, w której środowisko wykonawcze Java szuka plików zasobów i klas. Możesz łatwo ustawić ścieżkę klasy za pomocą dwóch różnych poleceń, jak pokazano poniżej:

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

Aby uzyskać więcej wglądu w ścieżkę klasy, należy sprawdzić następujące dokumenty.

Dokumentacja poleceń Java

Ustawianie ścieżki klasy

Rozwiązanie 3: Sprawdzanie katalogu

Gdy zadeklarujesz katalog jako ścieżkę klasy, zawsze będzie on odpowiadał katalogowi głównemu przestrzeni nazw. Na przykład, jeśli „/ usr / local / acme / klas” znajduje się na ścieżce klasy, wówczas Java wyszuka klasę „com.acme.example.Appuals”. Będzie szukał klasy o następującej ścieżce:

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

W skrócie, jeśli podasz następujący adres w ścieżce klasy, Java nie będzie w stanie znaleźć klasy:

 / usr / local / acme / klas / com / acme / example 

Powinieneś również sprawdzić swój podkatalog i sprawdzić, czy pasuje on do FQN. Jeśli FQN twoich klas to „com.acme.example.Appuals”, wówczas Java wyszuka „Appuals.class” w katalogu „com / acme / example”.

Aby dać przykład, załóżmy następujący scenariusz:

  • Klasa, którą chcesz uruchomić to: com.acme.example.Appuals
  • Pełna ścieżka do pliku to: /usr/local/acme/classes/com/acme/example/Appuals.class
  • Obecny katalog roboczy to: / usr / local / acme / klas / com / acme / example /

Wtedy miałyby miejsce następujące scenariusze:

 # źle, potrzebna jest nazwa FQN java Appuals # źle, nie ma folderu `com / acme / example` w bieżącym katalogu roboczym java com.acme.example.Appuals # źle, podobnie jak w powyższym scenariuszu java -classpath. com.acme.example.Appuals # OK; względna ścieżka klasy jest ustawiona java -classpath ../../ .. com.acme.example.Appuals # OK; bezwzględna ścieżka klasy jest ustawiona java -classpath / usr / local / acme / klas com.acme.example.Appuals 

Uwaga: Ścieżka klasy musi również obejmować wszystkie inne klasy (niesystemowe), których potrzebują Twoje aplikacje.

Rozwiązanie 4: Sprawdzanie pakietu klas

Jeśli wszystkie powyższe rozwiązania są prawdziwe w Twoim przypadku, musisz upewnić się, że kod źródłowy znajduje się w odpowiednim folderze. Ponadto poprawnie zadeklarowałeś paczkę . Jeśli uruchomisz swój kod z IDE, prawdopodobnie poinformuje Cię o problemie. Jednak w naszym przypadku, ponieważ uruchamiamy go w wierszu polecenia, błąd pozostanie niezauważony, a błąd klasy zostanie omówiony.

Ciekawe Artykuły