Das Spring Boot-Programm kann die Hauptklasse nicht finden


70

Ich habe ein Programm, das als Spring Boot App in Eclipse ausgeführt wird. Das Programm lief gut. Dann habe ich folgendes gemacht:

Klicken Sie mit der rechten Maustaste auf Projekt -> Ausführen als -> Maventest.

Das war zufällig. Als ich dann versuchte, das Programm erneut als Spring-Boot-App auszuführen, wurde der folgende Fehler ausgegeben.

Error: Could not find or load main class com.bt.collab.alu.api.webapp.Application

Wie zeige ich die Bewerbung zurück auf meine Hauptklasse? Vielen Dank


com.bt.collab.alu.api.webapp.Applicationist die richtige Klasse?
MariuszS

Dies ist die Klasse, in der meine Hauptklasse ja ist
Christopher Jobling

Welche Spring Boot Version?
MariuszS

Antworten:


44

Die Hauptklasse kann in pom.xml konfiguriert werden

<properties>
    <start-class>com.bt.collab.alu.api.webapp.Application</start-class>
</properties>

1
Die Hauptklasse kann im Eigenschaftenabschnitt von pom.xml als Startklassenelement definiert werden: <Eigenschaften> <! - Die Hauptklasse, die mit der Ausführung von "java -jar" -> <Startklasse> org.baeldung gestartet werden soll .DemoApplication </ start-class> </ property> WICHTIG - >>> Beachten Sie, dass diese Eigenschaft nur ausgewertet wird, wenn wir in unserer pom.xml auch das übergeordnete Spring-Boot-Starter-Parent als <parent> hinzufügen. baeldung.com/spring-boot-main-class
granadaCoder

Eine weitere Überprüfung muss durchgeführt werden, um sicherzustellen, dass keine Fehler im Projekt vorliegen, insbesondere in POM.xml, obwohl die Hauptklasse in pom.xml deklariert ist
Mahender Reddy Yasa

112

Ich hatte das gleiche Problem. Versuche dies :

Klicken Sie mit der rechten Maustaste auf das Projekt -> Maven -> Projekt aktualisieren

Führen Sie dann das Projekt erneut aus. Hoffe es funktioniert auch für dich.


Das hat auch bei mir funktioniert. Die anfängliche (Maven-) Projektkonfiguration bei Verwendung von "Neues Projekt"> "Spring-Boot-Assistent" scheint unvollständig zu sein. (Windows 10, Eclipse Photon Release (4.8.0), Frühjahr 2.1.1)
MichaelHuelsen

Das hat bei mir funktioniert, aber was ist das main cause hier?
Kalanka

Möglicherweise kann dies dadurch verursacht werden, dass der Zielordner verwendet mvn installund anschließend mvn cleanentfernt wird.
Cyber

21

Schauen Sie in Eclipse unter "Ausführen -> Konfigurationen ausführen ..." nach. Sie sollten die neue löschen, die Sie versehentlich erstellt haben. Sie sollten weiterhin die vorhandene haben.

Ich vermute, es wurde eine neue Laufkonfiguration für den "Run as Maven Test" erstellt, und Sie starten jetzt immer diese.


Großartig!. Dies ist eine dauerhafte Lösung, wenn Sie andere laufende Konfigurationen löschen.
Eneski

1
Vielen Dank! In meinem Fall habe ich mein Projekt von Maven nach Gradle konvertiert. Alles schien zu funktionieren, bis "Ausführen als> Spring Boot App": Ich bekam Error: could not find or load main class. Ich habe die Konfiguration "Ausführen als" (die zufällig Maven-Abhängigkeiten hatte) gelöscht, neu erstellt (3 Tastenklicks) ... und das Problem ist verschwunden.
Pauls4

17

Wenn Sie Spring Boot verwenden und die oben genannten Vorschläge nicht funktionieren, sollten Sie sich die Ansicht Eclipse-Probleme ansehen (verfügbar unter Fenster -> Ansicht anzeigen -> Probleme).

Beispielsweise können Sie denselben Fehler erhalten (Fehler: Hauptklassengruppen- ID konnte nicht gefunden oder geladen werden. Anwendung), wenn eine Ihrer JAR-Dateien beschädigt ist. Eclipse wird sich beschweren, dass die Applications-Klasse nicht gefunden werden kann, obwohl das fehlerhafte Glas die Hauptursache ist.

In der Ansicht "Probleme" wird jedoch das fehlerhafte Glas für Sie identifiziert.

Auf jeden Fall musste ich manuell zu meinem lokalen MVN-Repo (in .m2) gehen und das beschädigte JAR manuell löschen und aktualisieren (Rechtsklick auf das Projekt im Paket-Explorer), Maven -> Projekt aktualisieren ... -> OK (vorausgesetzt, das richtige Projekt ist markiert).


Ich hatte ein ernstes Problem mit Hibernate, das verschiedene Fehler verursachte. Diese Methode hat mir sehr geholfen! Als ich das Fenster "Probleme" einschaltete, wurde deutlich die beschädigte .jar-Datei angegeben, die ich einfach im .m2-Repository gelöscht habe. Danach habe ich mein Projekt mit Maven neu aufgebaut und jetzt funktioniert alles einwandfrei. Vielen Dank!
milan.latinovic

Ihr Vorschlag hat mein Problem gelöst. Wir können auch auf "mvn install" am Speicherort der POM-Datei klicken, wodurch das Problem mit Abhängigkeiten automatisch behoben wird. Danke.
Shiv

9

Dies passierte mir, nachdem ich den POM aktualisiert hatte (einige Abhängigkeiten hinzugefügt).

Der folgende Schritt hat mir geholfen, diesen Fehler zu vermeiden

right click on the project > maven > update project

1
Das hat mir geholfen. Vielen Dank.
Mdhar9e

Ich habe wieder das gleiche Problem und dieses Mal habe ich den POM nicht aktualisiert. Ich habe gerade ein altes Projekt ausgewählt und versucht, es auszuführen, aber die Hauptklasse konnte keinen Fehler finden. Immer noch 'Rechtsklick auf das Projekt> Maven> Projekt aktualisieren' funktioniert
Tadele Ayelegn

6

Ich habe alle oben genannten Lösungen ausprobiert, aber bei mir nicht funktioniert. Endlich konnte es mit einem einfachen Fix behoben werden.

Führen Sie auf STS die Konfiguration aus> öffnen Sie Ihre Spring Boot-App> öffnen Sie Ihre Konfiguration.

  1. Überprüfen Sie im Spring Boot Tab Ihre Hauptklasse und Ihr Profil.
  2. Gehen Sie dann zur Registerkarte Klassenpfad. Unten sehen Sie zwei Kontrollkästchen, eines ist "Testcode ausschließen" (Aktivieren Sie dieses Kontrollkästchen, wenn Sie keine Testklassen ausführen möchten) und das andere "Temporäre Jar-Datei zum Angeben des Klassenpfads verwenden" (dies ist) notwendig).

Speichern Sie Ihre Konfiguration und führen Sie sie aus. Geben Sie hier die Bildbeschreibung ein


5

Verwenden Sie den Befehl spring-boot: run , um die Spring-Boot-Anwendung zu starten:

Voraussetzung: 1. Fügen Sie der pom.xml folgende Eigenschaft hinzu

<property>    
<start-class>com.package.name.YourApplicationMainClass</start-class>
</property>

2. Erstellen Sie Ihr Projekt

Konfigurieren Sie dann den Befehl maven mit spring-boot: run.

Navigation:

Klicken Sie mit der rechten Maustaste auf Projekt | Ausführen als | Konfiguration ausführen ... | Fügen Sie eine neue Maven-Konfiguration mit dem Befehl spring-boot: run hinzu


Vielen Dank! Diese Maven-Konfiguration hilft mir, die endgültige Spring Boot Build-Anwendung zu testen
Julianesten

4

Wenn jemand Gradle für den Build verwendet, werden die folgenden Zeilen in die Datei build.gradle eingefügt

apply plugin: 'application'

mainClassName = "com.example.demo.DemoApplication"


3

Intellij

  • Intellij schließen
  • Entfernen Sie alle Dateien, die sich auf Intellij beziehen (.idea-Ordner und * .iml-Dateien).
  • Öffnen Sie das Projekt in Intellij, als wäre es das erste Mal (Open Open funktioniert nicht, ID muss über Datei erfolgen -> Öffnen)

2

Ich habe die Version Spring 1.5.3.RELEASE verwendet und pom-Abhängigkeiten wie angegeben

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
    </parent> 

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
   </dependencies>

Und meine Hauptklasse war

@SpringBootApplication
public class SpringAppStarter {


    public static void main(String[] args) {

        SpringApplication.run(SpringAppStarter.class, args);
    }

}

Aber noch während der Ausführung der Hauptklasse bekam ich:

Hauptklasse konnte nicht gefunden oder geladen werden ... mit meinem Klassennamen.

Ich konnte sehen, dass die Klasse im Klassenpfad verfügbar war und ich STS IDE verwendete.

Ich habe keinen Grund für das Problem bekommen, dann habe ich versucht, manuell durch Maven zu bauen

mvn clean install

Immer noch Problem war da, dann merke ich, dass mein Projekt zwei Bibliotheken hat

  1. Präsenzbibliothek
  2. Maven Bibliothek

Was ich getan habe:
Ich habe einen weiteren mavenRepo-Ordner erstellt und ihn erneut erstellt und mein Projekt aktualisiert. Danach hat es funktioniert und ich habe gesehen, dass die Maven Library aus dem Pfad der Projektklasse gelöscht wurde.

Während der Ausführung wurde ein Problem mit mehreren Versionen festgestellt, sodass keine geeignete Klasse für die Ausführung meiner Anwendung gefunden werden konnte. Eine andere auf dieser Seite aufgeführte Lösung behebt das Problem ebenfalls, wenn Sie jedoch einen Fehler machen

  1. Klasse kommentieren
  2. POM-Eintrag
  3. Glasversion usw.

Hoffe, dies kann das Problem lösen, wenn jemand dieses Problem bekommt


2

Das Löschen alter Gläser aus .m2 und das Aktualisieren des Maven-Projekts sollte der Hauptschritt sein. In den meisten Fällen wird das Problem behoben. Der Grund für dieses Problem sind meistens beschädigte alte Gläser


2

Es ist dasselbe Problem aufgetreten und es konnte durch die folgenden Schritte behoben werden:

  1. Datei -> Cache ungültig machen und neu starten
  2. Datei -> Neu -> Projekt aus vorhandener Quelle
  3. Wählen Sie nur die Datei pom.xml (nicht das gesamte Projektverzeichnis) aus, um das Projekt zu laden. Das Projekt wird automatisch eingerichtet.

2

Fehler: Hauptklasse konnte nicht geladen oder gefunden werden

Projekt: Spring Boot Tool: STS


Schritte lösen:


  1. Führen Sie das Projekt aus

  1. Auf der Registerkarte "Probleme" wird der beschädigte Fehler angezeigt

  1. Löschen Sie dieses bestimmte Glas (beschädigtes Glas) im Ordner .m2

  1. Projekt aktualisieren

  1. Erfolgreich ausführen


1

Ich weiß, das ist eine ziemlich späte Antwort. Aber es könnte immer noch einigen neuen Lernenden helfen. Das folgende Beispiel gilt nur für Springboot mit NETBEANS. Ich musste folgende Schritte ausführen:

Schritt 1 . Folgen Sie der Antwort von @Mariusz.

Schritt 2. Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> AUSFÜHREN. Stellen Sie sicher , dass der Hauptklasse - Feld ist die richtige Starterklasse sonst Klicken Sie auf Durchsuchen und wählen Sie aus den verfügbaren Klassen hat.

Schritt 3 . Klicken Sie auf OK-> OK. Dann ist alles. Vielen Dank.


1

Ich hatte das gleiche Problem. Löschen Sie einfach den Ordner .m2 aus Ihrem lokalen Repository. Ich hoffe, es wird funktionieren.


0

Wenn Sie auf die gestoßen sind

Fehler: Hauptklasse im Maven-Projekt konnte nicht gefunden oder geladen werden

Tun Sie dies, es hat bei mir funktioniert:
Grund für den Fehler: Der Grund für diesen Fehler ist, dass die JAR-Datei oder die Abhängigkeit zum Ausführen eines Maven-Projekts nicht korrekt installiert ist.

Lösung für den Fehler: Gehen Sie in den Projektordner (zB D:\office\OIA-service-app)
in der Adressleiste des Computertyp Befehl cmdund drücken Sie die Eingabetaste. Stellen Sie an der
Eingabeaufforderung mvn clean installsicher, dass Sie über eine Internetverbindung verfügen.


0

Wenn Ihr Projektverpackungstyp Krieg war, konnten Sie nicht starten. Ich habe das Maven Assembly Plugin mit dieser Konfiguration verwendet.

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version><!--$NO-MVN-MAN-VER$ -->
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.ttech.VideoUploaderApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- this is used for inheritance merges -->
                    <phase>package</phase> <!-- bind to the packaging phase -->
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

und meine Verpackung war Krieg, den ich bekam, kann keine Ausnahme der Hauptklasse finden, aber ich habe die Verpackung in ein Glas geändert, das funktioniert hat;

<groupId>com.ttect</groupId>
<artifactId>VideoUploadListener</artifactId>
<version>1.0.0</version>
<packaging>**jar**</packaging>

0

Ich bin neu im Spring Boot und benutze STS mit Maven Build. Ich habe alle oben genannten Dinge getan, werde aber für mich nicht funktionieren. Ich habe zwei Probleme im Problemfenster von STS festgestellt. Im Pfad fehlte eine JAR-Datei (C: \ Users \ UserName.m2 \ repository \ com \ jayway \ jsonpath \ json-path \ 2.2.0). Ich folgte, der Weg ist nicht stark empfohlen, aber für mich gearbeitet.

1) Ich habe den Ordner .m2 aus dem Pfad gelöscht

2) STS neu gestartet

3) Klicken Sie mit der rechten Maustaste auf den Projektordner -> Maven -> Projekt aktualisieren -> aktivieren Sie "Aktualisierung von Snapshots / Releases erzwingen" -> Klicken Sie auf OK.

Maven hat seine Abhängigkeiten aktualisiert und das Problem ist gelöst.


0

In meinem Fall hat folgendes geholfen:

Der folgende Abschnitt in pom wurde hinzugefügt

  <plugins>
    <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
    </plugin>
  </plugins>

Lief es mit maven3 und es funktionierte


0

Ich habe auch diesen Fehler bekommen, hatte keine Ahnung. Ich konnte die Klasse und die Gläser im Zielordner sehen. Ich habe später Maven 3.5 installiert und mein lokales Repo über die Datei conf / settings.xml von Maven vom Laufwerk C auf ein anderes Laufwerk umgestellt. Danach hat es einwandfrei funktioniert. Ich denke, ein lokales Repo im C-Laufwerk war das Hauptproblem. Obwohl Repo vollen Zugriff hatte.


0

Ich hatte das gleiche Problem. Ich habe den Zielordner gelöscht und maven install ausgeführt, es hat funktioniert.


0

Ich hatte ein ähnliches Problem, als ich meinem Projekt eine Spring-Sicherheitsabhängigkeit hinzufügte. Dann löschte ich meinen Zielordner und verwendete erneut das Maven-Update. Es hat bei mir funktioniert.


0

Selbst wenn ich mit dem gleichen Problem konfrontiert war, stellte ich später fest, dass es passiert ist, weil der Maven-Build-Vorgang in meiner Umgebung nicht ordnungsgemäß ausgeführt wurde. Bitte überprüfen Sie es auch in Ihrem Fall.


0

Ich bin auf den gleichen Fehler gestoßen, obwohl ich Gradle Build verwendet habe. Das Delegieren von IDE-Build / Run-Aktionen an Gradle hat mein Problem gelöst.

Intellij: Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Build-Tools -> Gradle -> Runner

Bildschirmfoto


0

start-classfunktioniert bei mir nicht, ich habe es durch Hinzufügen build pluginszu behoben pom.xmlund executionsist notwendig.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

0

Ich habe den gleichen Fehler in der "Spring Tool Suite" -Software erhalten.

In meinem Fall habe ich Java 8 installiert und ein Projekt von Java 11 erstellt. Und wenn ich das Projekt ausführe, erhalte ich den gleichen Fehler wie "Hauptklasse kann nicht gefunden werden".

Dann habe ich ein Projekt in Java 8 erstellt und das Problem behoben.


0

Hier gibt es gute Antworten, aber vielleicht hilft diese auch jemandem.

Für mich geschah es kurz nachdem ich .idea (mit IntelliJ) gelöscht und das Projekt erneut importiert hatte.

Dann begann dieses Problem. Ich versuchte, mvn compile auszuführen (nur über die IDE Maven-Symbolleiste). Nachdem ich einige Kompilierungsfehler behoben hatte, verschwand das Problem

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.