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



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Błąd ' Nie udało się znaleźć lub załadować klasy głównej ”Występuje w przypadku użycia polecenia java w wierszu poleceń w celu uruchomienia programu Java poprzez podanie nazwy klasy w terminalu. Przyczyną takiego stanu rzeczy jest głównie błąd programistyczny użytkownika podczas deklarowania klasy.



Nie można znaleźć lub załadować klasy głównej w wierszu poleceń Java

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



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



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 mechanizmu Java, który pobierał klasę do wykonania, nie powiódł się. Plik polecenie java Nie mógł Znajdź klasa w odpowiednim katalogu.

W niektórych przypadkach musisz dodać rozszerzenie poprawna ścieżka do pliku i wskaż terminalowi Java poprawną lokalizację. Ponieważ wykonujesz polecenie z terminala wiersza poleceń, komputer nie wie, gdzie znajduje się klasa ani gdzie się znajduje. W ukierunkowanych środowiskach IDE nie stanowi to problemu, ponieważ IDE utrzymuje wskaźnik wskazujący na bieżący katalog roboczy.

Co to jest składnia „java”?

Zanim zaczniemy rozwiązywać problem, dlaczego terminal zwraca nam błąd podczas próby wykonania, najpierw musimy przyjrzeć się 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ń, w pełni kwalifikowana nazwa klasy Java i argument wiersza poleceń, który jest przekazywany do aplikacji, gdy cały pakiet jest kompilowany.

Przykład prawidłowego polecenia:

java -Xmx100m com.acme.example.ListAppuals kevin arrows bart

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

  • Wyszuka skompilowaną wersję klasy „ com.acme.example.ListAppuals ”.
  • Po wyszukaniu załaduje klasę.
  • Następnie, po załadowaniu klasy, klasa będzie przeszukiwana pod kątem metody „main” z prawidłowym podpisem, modyfikatorami i zwracanym typem. Przykładowa klasa główna wyglądałaby tak:
public static void main (String [])
  • Metoda zostanie wywołana z argumentami „kevin”, „strzałki” i „bart” jako ciąg [].

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 podanie niewłaściwej nazwy klasy jako argumentu (lub poprawna nazwa klasy to niewłaściwa forma). Ponieważ deklarujemy parametry w wierszu poleceń, jest bardzo prawdopodobne, że przekażesz argument nazwy klasy w złej formie. Tutaj wymienimy wszystkie możliwe scenariusze, w których możesz popełnić błąd.

  • Pisanie prosta nazwa klasy . Jeśli deklarujesz klasę w pakiecie, takim jak „com.acme.example”, musisz użyć rozszerzenia pełna nazwa klasy w tym pakiet w poleceniu Java.
java com.acme.example.ListAppuals

zamiast

java ListAppuals
  • Powinieneś zadeklaruj nazwę klasy zamiast deklarować nazwę pliku lub ścieżkę. Java nie pobiera klasy, jeśli zadeklarujesz dla niej ścieżkę / nazwę pliku. Błędny wpisy obejmują:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Obudowa należy wziąć pod uwagę. W poleceniach Java jest rozróżniana wielkość liter i jeśli pomylisz się choćby o jedną literę, nie będziesz w stanie załadować klasy głównej. Przykład nieprawidłowe błędy są:
java com.acme.example.listappuals
  • ty nie powinieneś zadeklarować nazwa pliku źródłowego . Jak wspomniano wcześniej, wystarczy zadeklarować klasę w prawidłowym formacie pełnej nazwy klasy. Przykład błędu:
java ListAppuals.java
  • Ten błąd wystąpi również, jeśli utworzysz plik błąd pisowni lub zapomnij całkowicie wpisać nazwę klasy .

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

Rozwiązanie 2: Sprawdzanie ścieżki klas

Jeśli poprawnie zadeklarowałeś nazwę klasy, ale nadal wyświetlany jest błąd, istnieje prawdopodobieństwo, że polecenie java nie może znaleźć określonej nazwy klasy w ścieżce. Ścieżka klas to ścieżka, w której środowisko wykonawcze Java wyszukuje pliki 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 informacji na temat ścieżki klas, zapoznaj się z następującymi dokumentami.

Dokumentacja poleceń Java

Ustawianie ścieżki klas

Rozwiązanie 3: Sprawdzanie katalogu

Kiedy deklarujesz katalog jako ścieżkę klas, będzie on zawsze odpowiadał korzeniu przestrzeni nazw. Na przykład, jeśli „/ usr / local / acme / classes” znajduje się na ścieżce klas, 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

Zasadniczo, jeśli umieścisz następujący adres w ścieżce klas, Java nie będzie w stanie znaleźć klasy:

/ usr / local / acme / classes / com / acme / example

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

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

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

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

# źle, wymagana jest 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; ustawiona jest względna ścieżka klasy java -classpath ../../ .. com.acme.example.Appuals # OK; ustawiana jest bezwzględna ścieżka klasy java -classpath / usr / local / acme / classes com.acme.example.Appuals

Uwaga: Ścieżka klas musi również zawierać wszystkie inne klasy (niesystemowe), których potrzebuje Twoja aplikacja.

Rozwiązanie 4: Sprawdzanie pakietu zajęć

Jeśli wszystkie powyższe rozwiązania sprawdzają się w Twoim przypadku, musisz upewnić się, że kod źródłowy jest umieszczony we właściwym folderze. Ponadto poprawnie zadeklarowałeś plik pakiet . Jeśli uruchomisz swój kod za pomocą IDE, prawdopodobnie poinformuje Cię ono o problemie. Jednak w naszym przypadku, ponieważ uruchamiamy go w wierszu poleceń, błąd pozostanie niezauważony i pojawi się omawiany błąd klasy.

4 minuty czytania