Błąd: nie można znaleźć lub załadować klasy głównej w intelliJ IDE


151

Jestem początkującym w Javie i próbuję uruchomić mój kod za pomocą IntelliJ, który właśnie zainstalowałem jako moje IDE z JDK 1.7. Poniższy fragment kodu nawet się nie kompiluje i ciągle wyświetla mi błąd:

Error: Could not find or load main class libTest

Kod

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

Czy jest jakaś zmiana, którą muszę wprowadzić w ustawieniach kompilatora? Czy jest to kod.


2
Jaka jest nazwa pliku źródłowego? Czy to jest libTest.java?
QuantumMechanic

import java.lang...Dzieje się to automatycznie dla klas w langpakiecie.
Andrew Thompson

Jak wspomniano w QuantumMechanic, twoja główna klasa musi znajdować się w pliku o dokładnie takiej nazwie. Więc libTest musi znajdować się w pliku java o nazwie libTest.java, w przeciwnym razie kompilator java będzie narzekał. Ponadto, czy utworzyłeś źródło za pośrednictwem IDEA, czy też utworzyłeś nowy projekt IDEA na istniejącym źródle?
mcfinnigan

próbowano zaimportować java.lang bez różnicy
Confused Mailman

są identyczne. Czy jest jakiś inny powód, dla którego taki błąd powinien zostać oznaczony?
Confused Mailman

Odpowiedzi:


178

To może pomóc:

1) Menu „Buduj” -> „ Rebuild Project”. Czasami Intellij nie przepisuje klas, ponieważ one już istnieją, w ten sposób poprosisz Intellij o przepisanie wszystkiego.

2) Menu „Uruchom” -> „ Edit configuration” -> usuń profil -> dodaj ponownie profil („Aplikacja” jeśli jest to aplikacja Java), wybierz swoją główną klasę z menu rozwijanego „Klasa główna”.

3) Menu „Buduj” -> „ Rebuild Project”.


9
Miałem zupełnie nowy projekt w IntelliJ i nie chciał się uruchomić. Rebuild Projectpracował dla mnie!
Danny Harding

Druga opcja zadziałała dla mnie. Ale usuń profil konfiguracji, a następnie kliknij prawym przyciskiem myszy swoją klasę -> uruchom
NoName

2
"Build" menu -> "Rebuild Project- wykonał pracę! Dzięki
Yan Khonski

1
Pierwsza opcja rebuild projectzadziałała w moim przypadku. Dziękuję Ci!
khwilo

1
Usunąłem .idea, .mvn i inne katalogi docelowe, a następnie ponownie uruchomiłem IntelliJ. Poszedłem do dziennika zdarzeń, dodałem projekt jako projekt Maven, a następnie wykonałem kroki wymienione przez @Kishore tutaj. Już działa.
Sunny Shekhar

105

Jeśli żadna z powyższych odpowiedzi nie zadziałała, po prostu zamknij swoje intelliJ IDE i usuń plik i folder intelliJ IDE z katalogu głównego projektu:

rm -rf .idea *.iml 

Następnie otwórz projekt za pomocą intelliJ. Teraz musi działać.


1
To zadziałało dla mnie. Ponownie zaimportowałem projekt do IntelliJ, ale dla opcji „Moduły grupowe” użyłem „używając nazw kwalifikowanych” (zamiast „używać jawnych grup modułów”.
markhops

3
Usunięcie .ideafolderu zawsze rozwiązuje wszystkie problemy z IDE JetBrains :)
shelll

to też zadziałało dla mnie, jestem wielkim fanem Intellij, ale oni też muszą nauczyć się prostych rzeczy.
Zwakele Mgabhi

Zmarnowane ponad 30 minut. w końcu to właśnie musiałem zrobić, aby wszystko działało
vins

U mnie działa tylko ta metoda na tej stronie.
zionpi

81

Dla mnie rozwiązaniem było naprawienie katalogu wyjściowego w ustawieniach projektu. Wcześniej używałem tylko „celu” dla danych wyjściowych kompilatora projektu. Zamiast tego zaktualizowałem go, aby miał pełną ścieżkę, np. D: \ dev \ sigplusjava2_68 \ target wprowadź opis obrazu tutaj


10
to mi nie pomogło
Pavel

Możliwe, że moje rozwiązanie tutaj jest w rzeczywistości subtelną odmianą odpowiedzi @ Ehsan poniżej. Być może określając katalog docelowy, nadaje mu nową lokalizację, w której można skompilować wszystkie obiekty zasadniczo wykonujące tę samą pracę, co Rebuild Projectrobi.
Wujek Iroh

1
@UncleIroh Jeśli wykonał tę samą pracę, odbudowanie + odczytanie config. rozwiązałoby problem na początku. Tak się nie stało, ale Twoje rozwiązanie tak.
hyperum

To powinna być akceptowana odpowiedź. Zawsze znowu mnie wkurza ..: p
Christopher Stock

37

Miałem ten problem i próbowałem wszystkiego pod słońcem, o czym mogłem pomyśleć i na tej stronie.

Żadna z moich klas Java nie została pobrana po ściągnięciu ze zdalnej gałęzi. Wszystkie klasy miały czerwone litery J przy nazwach w hierarchii projektu, a nie niebieskie litery C.

W końcu spróbowałem postępować zgodnie z tym samouczkiem i kilka kroków wypróbowałem coś nieopisanego i naprawiłem problem: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Oto co zrobiłem:

  1. Idź do pliku | Struktura projektu lub naciśnij Ctrl + Shift + Alt + S
  2. Wybierz opcję Moduły w sekcji Ustawienia projektu.
  3. Na karcie Źródła kliknij Źródła w wierszu „Oznacz jako:”.
  4. Kliknij przycisk Zastosuj.

Z jakiegoś powodu wszystkie moje zajęcia miały wtedy niebieskie C.

Ktoś, kto lepiej rozumie, w jaki sposób IntelliJ i / lub IDE mogą być w stanie wyjaśnić to zjawisko, ale jedyne, co wiem, to to, że teraz może zobaczyć wszystkie klasy, a co ważniejsze, główną i uruchomić.


To zadziałało dla mnie dopiero po zamknięciu Intellij, usunięciu folderu .idea, a następnie ponownym otwarciu Intellij i wykonaniu powyższych kroków.
Shell_Leko

14

Jawne utworzenie outfolderu, a następnie ustawienie ścieżki wyjściowej naC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

LUBIĘ TO

wydawało się działać dla mnie, gdy tylko outi spodziewając się, że IntelliJ sprawi, że folder nie będzie.


Spróbuj także poprosić IntelliJ o utworzenie nowej konfiguracji uruchamiania:

Znajdź poprzednią, klikając

! [Edytuj konfiguracje

następnie go usuń

wprowadź opis obrazu tutaj

i dobrze.

Teraz (WAŻNY KROK) otwórz klasę zawierającą twoją główną metodę. Najłatwiej to zrobić, klikając nazwę klasy w okienku projektu po lewej stronie.

Daj mu Alt+ Shift+ F10i powinieneś dostać

TO

Teraz hit Enter!!

Ta dah?? (Zadziałało?)


Konfiguracja uruchamiania działa, zwłaszcza jeśli przeniosłeś main()funkcję z class Mainklasy do innej. W takim przypadku edytuj konfigurację uruchamiania, jak pokazano powyżej, i zmień wartość „Main class” na nazwę swojej klasy (w pełni kwalifikowana).
forumulator

Mam tylko opcję „Edytuj konfigurację”, nie działa dla mnie (
Ver Nick

14

Unieważnij pamięć podręczną i zrestartuj swój intellij, zadziałało dla mnie. Przejdź do pliku, jak pokazano na załączonym obrazku


7

Wiem, że zadawano to jakiś czas temu, ale właśnie potykałem się o ten problem i pomyślałem, że moje odkrycia mogą pomóc innym. Jak wskazano, komunikat o błędzie jest w zasadzie wynikiem folderu out. Dzieje się tak dlatego, że kiedy próbujesz uruchomić program, najpierw kompiluje on kod i umieszcza skompilowany wynik w lokalizacji wyjściowej, a następnie próbuje załadować skompilowany kod z lokalizacji wyjściowej. Jeśli skompilowany kod nie znajduje się w oczekiwanej lokalizacji, zostanie wyświetlony błąd.

Szczególnie chciałbym podzielić się tym, że czasami kod nie jest kompilowany (budowany), mimo że konfiguracja uruchamiania określa opcję „Kompiluj” w sekcji „Przed uruchomieniem” panelu konfiguracyjnego.

Kiedy to się może stać? Jedna sytuacja, która może to spowodować, to sytuacja, gdy używasz modułów i ręcznie usuwasz katalog wyjściowy modułu. Na przykład, jeśli mam moduł o nazwie „foo”, w out / production powinien znajdować się katalog o nazwie foo. Jeśli usuniesz go ręcznie, system kompilacji może nie wiedzieć, że należy go odbudować.

Co gorsza, jeśli wybierzesz opcję Build | Zbuduj moduł 'foo', nadal może nie odbudować modułu. W takim przypadku należy wybrać plik w module, na przykład „bar.java”, a następnie wybrać opcję Build | Ponownie skompiluj „bar.java”. Teraz katalog out / production / foo powinien zostać przywrócony.

Ponieważ IntelliJ zazwyczaj wie o wszelkich zmianach, które zachodzą, zaskoczyło mnie to i zajęło mi trochę czasu, aby się zorientować, więc pomyślałem, że się podzielę.


6

Sprawdź moduł swojej klasy : napotkałem ten problem z intellij: Mam projekt wielomodułowy Mavena, problem polega na tym, że uruchamiam klasę, która nie istnieje w module w konfiguracji, więc mój problem jest naprawiany przez ustawienie odpowiedniego modułu ( "edytuj konfigurację" -> "użyj klasy modułu")

niech ci to pomoże


Dla mnie też zadziałało. Dzięki! Coś prawdopodobnie poszło nie tak podczas instalowania aktualizacji IntelliJ lub wtyczki Scala. Potem pojawia się ten dziwny problem. Bardzo irytujące i czasochłonne. Miejmy nadzieję, że JetBrains znajdzie rozwiązanie.
André van Delft

6

Musiałem oznaczyć folder „src” jako „Źródła”. Po ponownym uruchomieniu IntelliJ i przebudowie projektu mogłem uruchomić projekt bez dalszych problemów (patrz zrzut ekranu ). Edycja: Możesz uzyskać dostęp do zakładki "Struktura projektu" poprzez Plik-> Struktura projektu lub naciskając Ctrl + Shift + Alt + S.


1
Jeśli (tak jak ja) nie masz zakładki „źródła”, powinieneś dodać nowy moduł (kliknij zielony +) i jako źródło wybierz swój katalog główny. Nic nie zostanie nadpisane, a folder src zmieni kolor na niebieski.
john ktejik

5

Otwórz kartę Moduły (naciśnij Ctrl + Shift + Alt + S). Miałem dwa moduły w ramach jednego projektu. Rozwiązałem problem po usunięciu drugiego nadmiarowego modułu (patrz zrzut ekranu).wprowadź opis obrazu tutaj


4

Z takimi problemami miałem do czynienia, gdy klasa znajduje się w folderze domyślnym, czyli gdy klasa nie deklaruje pakietu.

Więc myślę, że użycie instrukcji pakietu (np. package org.me.mypackage;) Na górze klasy powinno to naprawić.


czy mogę powielić tę linię kodu? .. jak mogę ją zmodyfikować w przypadku, gdy muszę?
Confused Mailman

Wystarczy, że użyjesz własnej nazwy pakietu, na przykład:package org.confused.mailman;
Hakan Serce

Cóż, instrukcja pakietu musi pasować do miejsca, w którym IDE umieściło plik. Jeśli IDE nie umieściło pliku w sourceBase /, org/confused/mailmandodanie tej linii pakietu nie pomoże.
QuantumMechanic

Myślę, że IDE poprowadzi to i automatycznie naprawi, jeśli zostanie wybrana zalecana poprawka.
Hakan Serce

nie pomaga: / .. IDE nie wydaje się być przejmowane żadną ze zmian, które wprowadzam .. wyrzuca powyższy błąd i siada i relaksuje się
Confused Mailman

3

Plik> Struktura projektu> Moduły> Oznacz folder „src” jako źródła. To powinno rozwiązać problem. Sprawdź również, czy wybrany jest najnowszy język, aby nie musieć zmieniać kodu ani dokonywać żadnych zmian konfiguracyjnych. wprowadź opis obrazu tutaj


2

W moim przypadku problem wydawał się być związany z aktualizacją IntelliJ. Kiedy to zrobiłem, nadpisałem pliki ze starego IntelliJ na pliki z nowego IntelliJ (społeczność 2017 do społeczności 2018). Potem wszystkie moje projekty zostały zerwane. Próbowałem wszystkiego w tym wątku i żaden z nich nie działał. Próbowałem zaktualizować Gradle do najnowszej wersji (4 do 4.8) i to nie zadziałało. Jedyną rzeczą, która działała dla mnie, było usunięcie całego folderu IntelliJ i ponowna instalacja. Wszystkie moje projekty działały później.


Wydaje się, że to faktycznie to. Używam przenośnego intellij, więc zmieniłem nazwę folderu głównego, na przykład z idea\binna, idea_old\bini zmieniłem nazwę folderu ustawień, w %user%\usernamektórym ma .IntelliJIdea2018.2być.IntelliJIdea2018.2_old ponownie rozpakowany plik zip intellij, aby zacząć używać go jako świeżej nowej wersji przenośnej (to jest wersja 2018.2.1) ze Spring Aplikacja rozruchowa składająca się z wielu oddzielnych modułów (nie połączonych w pojedynczym nadrzędnym pom.xml), każdy z nich jest aplikacją rozruchową wiosenną z własnym pom.xml i voila !!! Wszystkie prace, utworzony folder docelowy, kompilacja przed uruchomieniem deski rozdzielczej rozruchu wiosny.
Anddo

2

Oznacz katalog jako katalog źródłowy. Otwierane za pomocą Ctrl + Shift + Alt + S

wprowadź opis obrazu tutaj


1

Jak dla mnie - wypróbowałem kilka z powyższych opcji, nie działały. Potem właśnie zmieniłem nazwę mojej klasy Application i prawdopodobnie zmusiło to intelliJ do zbudowania nowego pliku jar, a komunikat o błędzie zaczął się zmieniać. Potem zmieniłem nazwę z powrotem i zadziałało.


1

Wypróbowałem wszystkie sugerowane tutaj hacki - bezskutecznie. Na koniec po prostu utworzyłem nową aplikację Maven i ręcznie skopiowałem do niej - jeden po drugim - pliki i zasoby pom.xml oraz java. Teraz wszystko działa. Jestem nowy w IntelliJ i nie jestem pod wrażeniem, ale jak łatwo jest wprowadzić go w niestabilny stan.


Musisz zamknąć intellij, usunąć folder .idea (prawdopodobnie ukryty plik); następnie ponownie otwórz folder w intellij - ponownie zainicjuje projekt intelli w oparciu o konfigurację maven / grade.
Jeremy

1

wprowadź opis obrazu tutaj

modules.xml z niewłaściwą zawartością, nie wiem, co jest z moim POMYSŁEM.


1

Odziedziczyłem kilka plików .JAVA z innego miejsca i nie mogłem wymyślić, jak zmusić je do pracy w żadnym IDE. Ostatecznie musiałem przejść do wiersza poleceń, w którym był plik Main.JAVA i uruchomić javac Main.java. Stworzyło to kilka plików .CLASS. IDE były wtedy w stanie wymyślić, co zrobić.


1

Otrzymałem ten błąd podczas używania Scala / SBT . IntelliJ nie mógł znaleźć głównej klasy, mimo że wszystko zostało skonfigurowane poprawnie. Moje rozwiązanie: usuń <user>/.sbt/<version>/plugins/targetfolder, a następnie uruchom ponownie IntelliJ.


1

Używam IntelliJ w Spring, a moja główna klasa jest zapakowana w JAR. Musiałem zaznaczyć „Uwzględnij zależności z zakresem„ Dostarczony ”” w oknie dialogowym Uruchom / Debuguj konfigurację


1

Jesteśmy w strukturze pliku / projektu. Odpowiedź może brzmieć:

Folder określony jako „główny katalog zawartości” wymaga folderu podrzędnego, w którym znajduje się kod. Dodatkowo znajdź przycisk oznaczający kod jako wykluczony, a nie. Nie należy mylić z polem wyboru, które stwierdza wykluczenie bez informowania, w jakiej fazie i w jakiej fazie ** Czy kompilator wyklucza czy wyklucza w czasie wykonywania? Jesteś skazany na test i dużo. Więc nie to pole wyboru, ale ikony i kolory.

Jako pomysł musimy sprawdzić, jak pierwotnie miał działać. Nigdy nie sprawili, że zadziałało na pierwszym miejscu i zaczęli dodawać rzeczy w stylu przedwczesnej kodakulacji. Minęło tyle lat i nie można oczekiwać żadnej poprawy. Ale jako lekarstwo możemy znaleźć sposób, aby za każdym razem zrobić to dobrze.


1

Inną rzeczą, którą możesz tutaj sprawdzić, jest faktyczna komenda przekazywana do maszyny JVM i upewnij się, że wygląda dobrze. Przewiń do góry konsoli Run, powinna to być pierwsza linia.

Spacje w polu Opcje maszyny wirtualnej Uruchom konfigurację spowodują nieprawidłowy format polecenia uruchamiania aplikacji i mogą spowodować wyświetlenie tego komunikatu o błędzie

-DsomeArgument="arg with space must be quoted"

Dzięki ! To zadziałało dla mnie !!
Jcoder

0

Opracowywanie rozwiązania Brada Turka ... Jeden z domyślnych szablonów projektów IntelliJ Java wymaga pliku o nazwie Main definiującego klasę Main i punkt wejścia metody main () . Jeśli metoda znajduje się w innym pliku (i klasie), Zmień Run konfigurację :

Uruchom okno konfiguracji

  1. Po otwarciu projektu w IntelliJ użyj menu Uruchom: Edytuj konfiguracje ..., aby otworzyć okno konfiguracji kompilacji.
  2. Jeśli wpis dotyczący klasy głównej nie zawiera nazwy pliku zawierającego klasę ujawniającą metodę wprowadzania main () , wprowadź poprawną nazwę pliku. (Konfiguracja na obrazku jest nieprawidłowa, dlatego w panelu konfiguracyjnym jest czerwona).
  3. Moja metoda wpisu main () znajduje się w klasie (i pliku) ScrabbleTest . Zatem zmiana klasy Main: na ScrabbleTest naprawia błąd wykonania.

Jak zauważyli inni, musisz odbudować używając nowej konfiguracji. Używam pakietu, ale wydaje się, że nie robi różnicy IME. Mam nadzieję że to pomoże.


0

W moim przypadku w pliku build.gradle modułu przypisanie mainClassName musi zawierać pełną nazwę klasy, tj. jak określono jako nazwę pakietu w pliku kodu źródłowego klasy głównej.


0

Po prostu przebuduj projekt (CTRL + F9) i dwukrotnie sprawdź (Edytuj konfiguracje), czy masz poprawnie ustawioną klasę główną i moduł (jeśli istnieje)


0

Prostym rozwiązaniem jest przejście do folderu kopii zapasowej w wierszu poleceń, w którym znajduje się folder główny projektu. Powinieneś mieć zainstalowany SBT w swoim komputerze.

Jeśli masz zainstalowany sbt, uruchom polecenie "sbt pakiet", to zrekompiluje projekt, jeśli się powiedzie, wróć do intelliJ, który będzie działał.


Witamy w SO! Kiedy odpowiadasz na odpowiedź, wigilia, jeśli jest właściwa, spróbuj trochę to wyjaśnić.
David García Bodego

0

W moim przypadku skonfigurowałem (stosunkowo) długie argumenty maszyny wirtualnej. Konwersja tych argumentów (jeśli to możliwe) na zmienne środowiskowe rozwiązała problem


Nie może mieć miejsca w opcjach VM chyba można umieścić „cytaty” wokół args
Yep

0

W moim przypadku aplikacja działa dobrze, gdy kod początkowo znajdował się w katalogu / src w projekcie. Później dodałem katalog / main / java po katalogu / src, po czym wystąpił błąd „Nie można znaleźć lub załadować klasy głównej ...”. W tym czasie nie można było dodać /src/main/java/YourMain.java do konfiguracji uruchamiania. To, co zrobiłem, to usunąć konfigurację uruchamiania, a następnie kliknąć prawym przyciskiem myszy projekt -> Otwórz ustawienia modułu (lub F4 po kliknięciu panelu Projekt) -> Ustawienia projektu -> Moduły usuń (x) stary katalog główny zawartości i + dodaj katalog główny zawartości, wybierz / src / main / java. Odbuduj projekt i zacznie działać.


0

Prawdopodobnie określiłeś niewłaściwy pakiet, a hierarchia pakietów byłaby nieprawidłowa. Zobacz poniżej

wprowadź opis obrazu tutaj

W takim przypadku ide wskazywałby na niewłaściwą ścieżkę.


0

W moim przypadku, jest to projekt Maven, ja ponownie przywiezione Maven (prawy przycisk myszy na pom.xml plik i kliknij ponownie importować ) to zadziałało natychmiast.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.