Fehler: Die Hauptklasse in der IntelliJ IDE konnte nicht gefunden oder geladen werden


151

Ich bin ein Anfänger in Java und versuche, meinen Code mit IntelliJ auszuführen, das ich gerade als meine IDE mit JDK 1.7 installiert habe. Der folgende Code wird nicht einmal kompiliert und gibt mir immer wieder den Fehler:

Error: Could not find or load main class libTest

Code

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");
   }
}

Gibt es eine Änderung, die ich in den Compiler-Einstellungen vornehmen muss? Oder ist es der Code?


2
Wie heißt die Quelldatei? Ist es libTest.java?
QuantumMechanic

import java.lang...Dies geschieht automatisch für Klassen im langPaket.
Andrew Thompson

Wie von QuantumMechanic erwähnt, muss sich Ihre Hauptklasse in einer Datei befinden, die genau so benannt ist. LibTest muss sich also in einer Java-Datei mit dem Namen libTest.java befinden, sonst beschwert sich der Java-Compiler. Haben Sie die Quelle auch über IDEA erstellt oder haben Sie ein neues IDEA-Projekt über einer vorhandenen Quelle erstellt?
McFinnigan

versucht, java.lang zu importieren machte keinen Unterschied
Confused Mailman

sie sind identisch. Gibt es einen anderen Grund, warum ein solcher Fehler markiert werden sollte?
Verwirrter Postbote

Antworten:


177

Dies könnte helfen:

1) Menü "Erstellen" -> " Rebuild Project". Manchmal schreibt Intellij die Klassen nicht neu, weil sie bereits vorhanden sind. Auf diese Weise bitten Sie Intellij, alles neu zu schreiben.

2) Menü "Ausführen" -> " Edit configuration" -> Profil löschen -> Profil wieder hinzufügen ("Anwendung", wenn es sich um eine Java-Anwendung handelt), wählen Sie Ihre Hauptklasse aus dem Dropdown-Menü "Hauptklasse".

3) Menü "Erstellen" -> " Rebuild Project".


9
Ich hatte ein brandneues Projekt in IntelliJ und es würde nicht laufen. Rebuild Projecthat für mich gearbeitet!
Danny Harding

2. Option hat bei mir funktioniert. Aber löschen Sie das Konfigurationsprofil und klicken Sie dann mit der rechten Maustaste auf Ihre Klasse -> Ausführen
NoName

2
"Build" menu -> "Rebuild Project- hat den Job gemacht! Vielen Dank
Yan Khonski

1
Die erste Option rebuild projecthat für mein Problem funktioniert. Danke dir!
Khwilo

1
Ich habe die Verzeichnisse .idea, .mvn und andere Zielverzeichnisse entfernt und dann IntelliJ neu gestartet. Ging zum Ereignisprotokoll, fügte ein Projekt als Maven-Projekt hinzu und befolgte dann die von @Kishore hier erwähnten Schritte. Es funktioniert jetzt.
Sunny Shekhar

105

Wenn keine der oben genannten Antworten für Sie funktioniert hat, schließen Sie einfach Ihre IntelliJ IDE und entfernen Sie die IntelliJ IDE-Datei und den Ordner aus dem Stammverzeichnis des Projekts:

rm -rf .idea *.iml 

Dann Projekt mit IntelliJ öffnen. Es muss jetzt funktionieren.


1
Das hat bei mir funktioniert. Ich habe mein Projekt auch erneut in IntelliJ importiert, aber für die Option "Gruppenmodule" habe ich "Verwendung qualifizierter Namen" verwendet (anstelle von "Verwendung expliziter Modulgruppen".
Markhops

3
Das Löschen des .ideaOrdners behebt immer alle Probleme mit den IDEs von JetBrains :)
Shelll

Das hat auch bei mir funktioniert, ich bin ein großer Fan von Intellij, aber sie müssen lernen, auch einfache Dinge zu tun.
Zwakele Mgabhi

Verschwendete 30+ Minuten. Schließlich war es das, was ich tun musste, damit die Dinge funktionierten
vins

Nur diese Methode auf dieser Seite funktioniert für mich.
Zionpi

81

Für mich bestand die Lösung darin, das Ausgabeverzeichnis unter den Projekteinstellungen zu korrigieren. Vorher habe ich nur "Ziel" für die Projekt-Compiler-Ausgabe verwendet. Stattdessen habe ich es aktualisiert, um einen vollständigen Pfad zu haben, z. B. D: \ dev \ sigplusjava2_68 \ target Geben Sie hier die Bildbeschreibung ein


10
das hat mir nicht geholfen
Pavel

Es ist möglich, dass meine Lösung hier tatsächlich eine subtile Variation von @ Ehsans Antwort unten ist. Durch Angabe des Zielverzeichnisses erhält es möglicherweise einen neuen Speicherort, an dem alle Objekte kompiliert werden können, die im Wesentlichen dieselbe Arbeit ausführen Rebuild Projectwie a.
Onkel Iroh

1
@UncleIroh Wenn es die gleiche Arbeit gemacht hat, erstellen Sie die Konfiguration neu und lesen Sie sie. hätte das Problem zunächst behoben. Es hat nicht geklappt, aber Ihre Lösung hat es getan.
Hyperum

Dies sollte die akzeptierte Antwort sein. Immer wieder nervig mich ..: p
Christopher Stock

37

Ich hatte dieses Problem und versuchte alles unter der Sonne, was mir einfiel und auf dieser Seite.

Keine meiner Java-Klassen wurde abgeholt, nachdem ich von einem entfernten Zweig gezogen hatte. Alle Klassen hatten rote Js mit ihren Namen in der Projekthierarchie, keine blauen Cs.

Am Ende habe ich versucht, diesem Tutorial zu folgen, und ein paar Schritte, um etwas zu versuchen, das nicht beschrieben wurde, und das Problem behoben: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Folgendes habe ich getan:

  1. Gehe zu Datei | Projektstruktur oder drücken Sie Strg + Umschalt + Alt + S.
  2. Wählen Sie im Abschnitt Projekteinstellungen die Option Module aus.
  3. Klicken Sie auf der Registerkarte Quellen in der Zeile 'Markieren als:' auf Quellen.
  4. Klicken Sie auf die Schaltfläche Übernehmen.

Aus irgendeinem Grund hatten alle meine Klassen dann blaue Cs.

Jemand mit einem besseren Verständnis dafür, wie IntelliJ und / oder IDEs das Phänomen erklären können, aber ich weiß nur, dass es jetzt alle Klassen und vor allem die Hauptklassen sehen und ausführen kann.


Dies funktionierte nur für mich, nachdem ich Intellij geschlossen, den Ordner .idea entfernt, Intellij erneut geöffnet und die obigen Schritte ausgeführt habe.
Shell_Leko

14

Explizites Erstellen eines outOrdners und Festlegen des Ausgabepfads aufC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

SO WAS

schien für mich zu funktionieren, als ich gerade war out, und ich erwartete, dass IntelliJ den Ordner nicht erstellen würde.


Versuchen Sie auch, sich von IntelliJ eine neue Ausführungskonfiguration erstellen zu lassen:

Suchen Sie den vorherigen, indem Sie auf klicken

! [Konfigurationen bearbeiten

dann entfernen Sie es

Geben Sie hier die Bildbeschreibung ein

und schlag okay.

Öffnen Sie nun (WICHTIGER SCHRITT) die Klasse, die Ihre Hauptmethode enthält. Dies ist wahrscheinlich am einfachsten, wenn Sie im Projektbereich auf der linken Seite auf den Klassennamen klicken.

Geben Sie ein Alt+ Shift+ F10und Sie sollten ein bekommen

DIES

Jetzt schlagen Enter!!

TA Dah?? (Hat es funktioniert?)


Die Ausführungskonfiguration funktioniert, insbesondere wenn Sie die main()Funktion von der class Mainin eine andere Klasse verschoben haben . Bearbeiten Sie in diesem Fall die Ausführungskonfiguration wie oben gezeigt und ändern Sie den Wert von 'Hauptklasse' in Ihren Klassennamen (voll qualifiziert).
Forumulator

Ich habe nur die Option "Konfiguration bearbeiten", funktioniert nicht für mich (
Ver Nick

14

Ungültiger Cache und Neustart Ihres Intellij, es hat bei mir funktioniert. Gehen Sie zu Datei, wie im angehängten Bild gezeigt


7

Ich weiß, dass dies vor einiger Zeit gefragt wurde, aber ich bin nur über dieses Problem gestolpert und dachte, meine Ergebnisse könnten anderen helfen. Wie bereits erwähnt, ist die Fehlermeldung im Wesentlichen ein Ergebnis des Out-Ordners. Dies liegt daran, dass beim Versuch, das Programm auszuführen, zuerst der Code kompiliert und das kompilierte Ergebnis an den Out-Speicherort verschoben wird. Anschließend wird versucht, den kompilierten Code vom Out-Speicherort zu laden. Wenn sich der kompilierte Code nicht am erwarteten Speicherort befindet, wird der Fehler angezeigt.

Der Punkt, den ich besonders mitteilen möchte, ist, dass der Code manchmal nicht kompiliert (erstellt) wird, obwohl in Ihrer Ausführungskonfiguration im Abschnitt "Vor dem Start" des Konfigurationsfensters "Erstellen" angegeben ist.

Wann kann das passieren? Eine Situation, die dazu führen kann, ist, wenn Sie Module verwenden und das Modul-Out-Verzeichnis manuell löschen. Wenn ich beispielsweise ein Modul mit dem Namen "foo" habe, sollte sich unter out / Production ein Verzeichnis mit dem Namen foo befinden. Wenn Sie es manuell löschen, weiß das Build-System möglicherweise nicht, dass es neu erstellt werden muss.

Noch schlimmer, wenn Sie Build | auswählen Erstellen Sie das Modul 'foo', das Modul wird möglicherweise immer noch nicht neu erstellt. In diesem Fall sollten Sie eine Datei im Modul auswählen, z. B. 'bar.java', und dann Build | auswählen Kompilieren Sie 'bar.java' neu. Jetzt sollte das out-Verzeichnis out / Production / foo wiederhergestellt werden.

Da IntelliJ normalerweise über Änderungen Bescheid weiß, überraschte mich dies und ich brauchte ein wenig Zeit, um es herauszufinden, sodass ich dachte, ich würde es teilen.


6

Überprüfen Sie Ihr Klassenmodul : Ich habe dieses Problem mit Intellij festgestellt: Ich habe ein Maven-Projekt mit mehreren Modulen. Das Problem besteht darin, dass ich eine Klasse ausführe, deren Modul in der Konfiguration nicht vorhanden ist. Daher wird mein Problem durch Festlegen des richtigen Moduls behoben ( "Konfiguration bearbeiten" -> "Modulklasse verwenden")

Möge dies Ihnen helfen


Hat auch für mich gearbeitet. Vielen Dank! Bei der Installation eines Upgrades von IntelliJ oder des Scala-Plugins ist wahrscheinlich ein Fehler aufgetreten. Danach bekommen Sie dieses seltsame Problem. Sehr nervig und zeitaufwändig. Hoffentlich findet JetBrains eine Lösung.
André van Delft

6

Ich musste den Ordner "src" als "Sources" markieren. Nach dem Neustart von IntelliJ und der Neuerstellung des Projekts konnte ich das Projekt ohne weitere Probleme ausführen (siehe Screenshot ). Bearbeiten: Sie können auf die Registerkarte "Projektstruktur" über Datei-> Projektstruktur oder durch Drücken von Strg + Umschalt + Alt + S zugreifen.


1
Wenn Sie (wie ich) keine Registerkarte "Quellen" haben, sollten Sie ein neues Modul hinzufügen (klicken Sie auf das grüne +) und Ihren Hauptordner als Quelle auswählen. Nichts wird überschrieben und der src-Ordner wird blau.
John Ktejik

5

Öffnen Sie die Registerkarte "Module" (Drücken Sie Strg + Umschalt + Alt + S). Ich hatte zwei Module unter einem Projekt. Ich habe das Problem nach dem Entfernen des zweiten redundanten Moduls gelöst (siehe Screenshot).Geben Sie hier die Bildbeschreibung ein


4

Ich habe solche Probleme gehabt, wenn sich die Klasse im Standardordner befindet, dh wenn die Klasse kein Paket deklariert.

Ich denke also, dass die Verwendung einer Paketanweisung (z. B. package org.me.mypackage;) über der Klasse das Problem beheben sollte.


repliziere ich diese Codezeile? Wie ändere ich sie, falls ich muss?
Verwirrter Postbote

Verwenden Sie einfach einen eigenen Paketnamen wie package org.confused.mailman;
folgt

Nun, die Paketanweisung muss mit der Stelle übereinstimmen, an der die IDE die Datei abgelegt hat. Wenn die IDE die Datei nicht in sourceBase / abgelegt hat, hilft das org/confused/mailmanHinzufügen dieser Paketzeile nicht.
QuantumMechanic

Ich denke, IDE wird diesbezüglich eine Anleitung geben und dies automatisch beheben, wenn die empfohlene Korrektur ausgewählt ist.
Hakan Serce

nicht helfen: / .. die IDE scheint mit keiner der Änderungen, die ich vornehme, belästigt zu werden .. es wirft den obigen Fehler und setzt sich zurück und entspannt sich
Confused Mailman

3

Datei> Projektstruktur> Module> Ordner "src" als Quelle markieren. Dies sollte das Problem beheben. Überprüfen Sie auch, ob die neueste Sprache ausgewählt ist, damit Sie weder Code ändern noch Konfigurationsänderungen vornehmen müssen. Geben Sie hier die Bildbeschreibung ein


2

In meinem Fall schien das Problem mit dem Upgrade von IntelliJ zu zusammenhängen. Als ich das tat, habe ich die Dateien aus dem alten IntelliJ mit den Dateien aus dem neuen IntelliJ (Community 2017 bis 2018 Community) überschrieben. Danach waren alle meine Projekte kaputt. Ich habe alles in diesem Thread versucht und keiner von ihnen hat funktioniert. Ich habe versucht, gradle auf die neueste Version (4 auf 4.8) zu aktualisieren, aber das hat nicht funktioniert. Das einzige, was für mich funktioniert hat, war, den gesamten IntelliJ-Ordner zu löschen und neu zu installieren. Alle meine Projekte haben danach funktioniert.


Es scheint das eigentlich so. Ich benutze tragbare intellij so dass ich den Hauptordner wie umbenannt aus idea\binzu sein idea_old\binund umbenannt die Einstellungen Ordner in %user%\usernamedenen .IntelliJIdea2018.2werden .IntelliJIdea2018.2_olddann intellij Zip - Datei erneut extrahiert beginnen sie als frische neue portable Version mit (Dies ist die Version 2018.02.01) mit Frühling Die Boot-App mit mehreren getrennten Modulen (nicht in der übergeordneten pom.xml verknüpft) ist jeweils eine Spring-Boot-App mit einer eigenen pom.xml und voila !!! Alle Arbeiten, Zielordner erstellt, kompiliert, bevor das Spring Boot Dashboard ausgeführt wird.
Anddo

2

Markieren Sie das Verzeichnis als Quellverzeichnis. Geöffnet über Strg + Umschalt + Alt + S.

Geben Sie hier die Bildbeschreibung ein


1

Für mich - ich habe einige der oben genannten Optionen ausprobiert, hat nicht funktioniert. Dann habe ich gerade meine Anwendungsklasse umbenannt und das hat IntelliJ wahrscheinlich gezwungen, ein neues Glas zu erstellen, und die Fehlermeldung hat sich geändert. Dann habe ich es wieder umbenannt und es hat funktioniert.


1

Ich habe alle hier vorgeschlagenen Hacks ausprobiert - ohne Erfolg. Am Ende habe ich einfach eine neue Maven-Anwendung erstellt und die pom.xml sowie die Java-Dateien und -Ressourcen nacheinander manuell kopiert. Es funktioniert jetzt alles. Ich bin neu bei IntelliJ und völlig unbeeindruckt, aber wie einfach es ist, es in einen instabilen Zustand zu bringen.


Sie müssen Intellij schließen und den Ordner .idea löschen (wahrscheinlich eine versteckte Datei). Öffnen Sie dann den Ordner erneut in Intellij. Dadurch wird das Intelli-Projekt basierend auf der Maven / Grade-Konfiguration neu initialisiert.
Jeremy

1

Geben Sie hier die Bildbeschreibung ein

modules.xml mit falschem Inhalt, ich weiß nicht, worauf es bei meiner IDEA ankommt.


1

Ich habe eine Reihe von .JAVA-Dateien von einem anderen Ort geerbt und konnte nicht herausfinden, wie ich sie in einer IDE zum Laufen bringen kann. Letztendlich musste ich zur Befehlszeile gehen, in der sich die Main.JAVA-Datei befand, und ausführen javac Main.java. Dadurch wurden eine Reihe von .CLASS-Dateien erstellt. Die IDEs konnten dann herausfinden, was zu tun ist.


1

Ich habe diesen Fehler bei der Verwendung von Scala / SBT erhalten . IntelliJ konnte die Hauptklasse nicht finden, obwohl alles richtig eingerichtet war. Meine Lösung: Löschen Sie den <user>/.sbt/<version>/plugins/targetOrdner und starten Sie IntelliJ neu.


1

Ich verwende IntelliJ mit Spring und meine Hauptklasse ist in ein JAR eingewickelt. Ich musste im Dialogfeld "Ausführen / Debuggen" den Bereich "Abhängigkeiten mit dem Bereich" Bereitgestellt "einschließen" markieren


1

Wir befinden uns in der Datei- / Projektstruktur. Die Antwort könnte lauten:

Der als "Inhaltsstamm" angegebene Ordner benötigt einen untergeordneten Ordner, in dem sich der Code befindet. Suchen Sie außerdem die Schaltfläche, die den Code als ausgeschlossen markiert und nicht. Nicht zu verwechseln mit einem Kontrollkästchen, das Ausschluss angibt, ohne zu sagen, in welcher Phase und was ** Ist es Compiler-Ausschluss oder Laufzeit-Ausschluss? Sie sind zum Testen und Los verdammt. Also nicht dieses Kontrollkästchen, sondern Symbole und Farben.

Als Idee müssen wir knacken, wie es ursprünglich gedacht war, um zu funktionieren. Sie haben es nie zum ersten Mal zum Laufen gebracht und angefangen, Dinge im Stil der vorzeitigen Kodakulation hinzuzufügen. Es ist so viele Jahre her und Sie können keine Verbesserung erwarten. Aber als Heilmittel können wir jedes Mal einen Weg finden, um es richtig zu machen.


1

Eine andere Sache, die Sie hier überprüfen können, ist der tatsächliche Befehl, der an die JVM übergeben wird, und stellen Sie sicher, dass er in Ordnung aussieht. Scrollen Sie zum oberen Rand Ihrer Run-Konsole. Dies sollte die erste Zeile sein.

Leerzeichen in Ihrem Feld "Konfigurations-VM-Optionen ausführen" führen zu einer Fehlform des App-Startbefehls und können zu dieser Fehlermeldung führen

-DsomeArgument="arg with space must be quoted"

Vielen Dank ! Das hat bei mir funktioniert !!
Jcoder

0

Ausarbeitung der Lösung von Brad Turek ... Eine der Standardvorlagen für IntelliJ Java-Projekte erwartet eine Datei namens Main, die den Einstiegspunkt für die Klassen Main und main () definiert . Wenn die Methode in einer anderen Datei (und Klasse) enthalten ist, ändern Sie die Run- Konfiguration:

Konfigurationsfenster ausführen

  1. Verwenden Sie bei geöffnetem Projekt in IntelliJ das Menü Ausführen: Konfigurationen bearbeiten ... , um das Fenster für die Build-Konfiguration zu öffnen.
  2. Wenn der Eintrag für Hauptklasse nicht den Namen der Datei auflistet die die Klasse enthält die Belichtungs main () Eingabemethode, geben Sie die richtigen Dateinamen. (Die Konfiguration im Bild ist falsch, weshalb sie im Konfigurationsfenster rot ist.)
  3. Meine main () - Eingabemethode befindet sich in der Klasse (und Datei) ScrabbleTest . So ändert Hauptklasse: bis ScrabbleTest den Laufzeitfehler behebt.

Wie andere angemerkt haben, müssen Sie mit der neuen Konfiguration neu erstellen . Ich benutze ein Paket, aber das scheint IME keinen Unterschied zu machen. Hoffe das hilft.


0

In meinem Fall muss in der build.gradle des Moduls die Zuweisung mainClassName den vollständig qualifizierten Klassennamen angeben, d. H. wie als Paketname in der Quellcodedatei der Hauptklasse angegeben.


0

Erstellen Sie einfach das Projekt neu (STRG + F9) und überprüfen Sie (Konfigurationen bearbeiten), ob Sie eine richtig eingestellte Hauptklasse und ein Modul (falls vorhanden) haben.


0

Eine einfache Lösung besteht darin, in den gesicherten Ordner in der Befehlszeile zu wechseln, in dem sich der Stammordner des Projekts befindet. Sie sollten SBT auf Ihrem Computer installiert haben.

Wenn Sie sbt installiert haben, führen Sie bitte den Befehl "sbt package" aus. Dadurch wird das Projekt neu kompiliert, wenn es erfolgreich ist. Kehren Sie zu der Intelligenz zurück, die funktioniert.


Willkommen bei SO! Wenn Sie auf eine Antwort antworten, versuchen Sie, sie ein wenig zu erklären, wenn sie richtig ist.
David García Bodego

0

In meinem Fall hatte ich (relativ) lange VM-Argumente konfiguriert. Das Konvertieren dieser Argumente (wann immer möglich) in Umgebungsvariablen hat das Problem für mich behoben


Sie können keine Leerzeichen in Ihren VM-Optionen haben, es sei denn, Sie setzen "Anführungszeichen" um die Argumente
Yep

0

In meinem Fall läuft die Anwendung gut, als sich der Code ursprünglich im Verzeichnis / src unter dem Projekt befand. Später habe ich das Verzeichnis / main / java nach / src hinzugefügt, dann ist der Fehler "Hauptklasse konnte nicht gefunden oder geladen werden ..." aufgetreten. Zu diesem Zeitpunkt konnten Sie /src/main/java/YourMain.java nicht zur Ausführungskonfiguration hinzufügen. Was ich getan habe, war, die Ausführungskonfiguration zu entfernen und dann mit der rechten Maustaste auf das Projekt-> Moduleinstellungen öffnen (oder F4, nachdem Sie auf das Projektfenster geklickt haben) -> Projekteinstellungen-> Module klicken (x) den alten Inhaltsstamm löschen und + Inhaltsstamm hinzufügen, klicken. wähle / src / main / java. Erstellen Sie das Projekt neu und es wird ausgeführt.


0

Sie hätten wahrscheinlich ein falsches Paket angegeben und die Pakethierarchie wäre nicht richtig. Schau unten

Geben Sie hier die Bildbeschreibung ein

Die Idee würde in diesem Fall den falschen Weg aufzeigen.


0

In meinem Fall handelt es sich um ein Maven-Projekt. Ich habe Maven erneut importiert (klicken Sie mit der rechten Maustaste auf die Datei pom.xml und klicken Sie auf Reimport ). Das hat sofort funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.