Hauptklasse org.apache.maven.wrapper.MavenWrapperMain konnte nicht gefunden oder geladen werden

Lesezeit: 5 Minuten

Benutzeravatar von hsluoyz
hsluoyz

Ich habe hier ein Spring Boot Projekt: https://github.com/jcasbin/jcasbin-springboot-plugin. Ich begegnete der folgende Fehler in Travis CI:

shell
3.43s$ ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
/home/travis/build/jcasbin/jcasbin-springboot-plugin
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
Error: Could not find or load main class org.apache.maven.wrapper.MavenWrapperMain
The command "eval ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V " failed. Retrying, 2 of 3.

Es scheint, dass die mvnw Befehl schlägt fehl. Diese Datei wird von meiner IDE generiert: IntelliJ IDEA 2018.1. Ich weiß nicht, wofür es verwendet wird und warum es nicht funktioniert?

Ich habe bereits ein Problem in den Github-Problemen von Spring Boot gefeuert Hier, aber das Spring-Projekt sagte, es sei das Problem des Maven-Wrappers, und wies mich hierher. Ich verstehe nicht ganz, was es bedeutet. Ist es ein Maven-Bug? Wie kann man den Fehler dann beheben?

  • Vielleicht werfen Sie einen Blick auf So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel … Ich glaube, niemand ist bereit, Ihren Code von Null an zu lesen und zu verstehen

    – 0x1C1B

    30. April 2018 um 16:08 Uhr


  • Dies ist nicht der Fehler, Sie müssen im Maven-Ausgabeprotokoll nach “mvn install” suchen.

    – Nyamiou Der Galeanthrop

    30. April 2018 um 16:58 Uhr

  • Mögliches Duplikat von Was bedeutet “Hauptklasse konnte nicht gefunden oder geladen werden”?

    – hsluoyz

    1. Mai 2018 um 7:17 Uhr

Phils Antwort ist richtig. Und hier erfahren Sie, wie Sie ein .mvn-Verzeichnis mit dem erforderlichen JAR darin erstellen.
Ich habe die Antwort hier gefunden (https://www.baeldung.com/maven-wrapper)

Wenn Sie Maven haben und Maven Wrapper zum Laufen bringen möchten, müssen Sie Maven Wrapper einrichten:

mvn -N io.takari:maven:wrapper

Es sollte ein .mvn-Verzeichnis erstellen und die benötigte JAR-Datei darin ablegen.

  • Obwohl die Antwort von @PhilWebb vielleicht richtig ist, befasste sie sich mit der Diagnose, aber nicht mit dem Heilmittel. Dies half, obwohl was ist takari und gibt es ein Standard-Lib/Paket?

    – perennial_noob

    19. Juli 2019 um 18:32 Uhr

  • das hat uns geholfen, unsere Jhispter-App zum Laufen zu bringen – danke

    – Gel

    19. Februar 2020 um 16:10 Uhr


  • Wenn Sie Windows verwenden, stellen Sie sicher, dass Sie die haben wrapper/maven-wrapper.jar

    – Heyomi

    18. November 2021 um 13:36 Uhr

  • Sie können dies überprüfen: github.com/takari/maven-wrapper maven.apache.org/wrapper “` lang-powershell mvn wrapper:wrapper “`

    – Nestor Waldyd

    19. Februar 2022 um 1:39 Uhr


Sie vermissen die .mvn Ordner in Ihrem Git-Repository. Sie sollten einen Ordner namens haben .mvn die die Dateien enthält wrapper/maven-wrapper.jar, wrapper/maven-wrapper.properties Und jvm.config. Vielleicht haben Sie es verpasst, weil es ein versteckter Ordner ist.

Versuchen Sie es zu tun git add -f .mvn von der Befehlszeile dann Commit und Push.

  • Beachten Sie, dass ich das .mvn-Verzeichnis tatsächlich bereits erstellt hatte und dies aus irgendeinem Grund noch tun musste.

    – mslissap

    4. Mai 2021 um 19:55 Uhr

  • In meinem Fall hatte ich das .mvn-Verzeichnis, aber ich musste git-lfs installieren, um maven-wrapper.jar richtig auschecken zu können (andernfalls wird es durch eine Textdatei ersetzt).

    – Rollintocour

    22. September 2021 um 14:59 Uhr

  1. Hinzufügen zu dem, was Oleksii Volynskyi,

Verwenden Sie den offiziellen Maven-Wrapper

mvn-Wrapper:Wrapper

anstelle von io.takari:maven:wrapper, das nicht mehr gepflegt wird

  1. Wie von Phil Webb erwähnt, fügen Sie den .mvn-Ordner zum Git-Repository hinzu

Für alle, die Windows verwenden und diesen Fehler sehen, überprüfen Sie, ob die .mvn Ordnerdateien wurden in CRLF konvertiert. Wenn dies der Fall ist, wird das Problem wahrscheinlich durch Ändern in LF behoben.

«Ich weiß nicht, wofür es verwendet wird»:

Ein mvnw ist ein Maven-Wrapper. Im Grunde ist es ein Skript, das Maven von Ihrer lokalen Installation entkoppelt und dem eigentlichen mvn-Befehl Prüfungen und Funktionen hinzufügen kann – für die vollständige Erklärung lesen Sie die offizielle Maven-Dokumentation.

Um es einzurichten (vorausgesetzt, Sie hatten es nur mit mvn) sollte es ausreichen, Folgendes auszuführen:

    mvn wrapper:wrapper 

Und das sollte mindestens die folgenden neuen Dateien erstellen:

    .
    ├── .mvn
    │   └── wrapper
    │       ├── maven-wrapper.jar
    │       └── maven-wrapper.properties
    ├── mvnw
    └── mvnw.cmd

Dann durch Hervorrufen mvnw Sie würden alles mit dieser maven-wrapper.jar ausführen – völlig unabhängig von Ihrer lokalen Maven-Installation.

Wenn die maven-wrapper.jar nach dem Befehl nicht vorhanden ist, haben Sie wahrscheinlich ein Netzwerkproblem – das häufigste ist ein Proxy, der konfiguriert werden muss.

“Wie repariert man”:

Was ist das Problem?

Proxy-Problem:

Zunächst die mvn wrapper:wrapper konnte die nicht abrufen maven-wrapper.jar Für mich.

.
├── .mvn
│   └── wrapper
│       └── maven-wrapper.properties
├── mvnw
└── mvnw.cmd

Wenn Sie tief in den Kaninchenbau eintauchen und den tatsächlichen Zustand überprüfen Wrapper-Codewerden Sie feststellen, dass es keinen Standard-Proxy gibt – aber Sie können einen Proxy für die Java Virtual Machine festlegen, indem Sie eine .mvn/jvm.config Datei mit:

    -Dhttp.proxyHost=proxy.domain.name
    -Dhttp.proxyPort=8080
    -Dhttps.proxyHost=proxy.domain.name
    -Dhttps.proxyPort=8080 

Wenn dies vorhanden ist, führen Sie einfach den Setup-Befehl erneut aus

    mvn wrapper:wrapper

hat sich alles selbst geholt:

    .
    ├─ .mvn
    │  ├── jvm.config
    │  └── wrapper
    │      ├── maven-wrapper.jar
    │      └── maven-wrapper.properties
    ├── mvnw
    └── mvnw.cmd

Inzwischen läuft die ./mvnw clean installsollte ok funktionieren – bei mir hat es funktioniert (aber nur für ein paar Tage)

Klassenproblem:

Eines schönen Tages kam ich ins Amt und das mvnw gab den gleichen Fehler zurück, den Sie angegeben haben! …

Für mich war das Problem tatsächlich ein Zeilenende-Problem (LF <-> CRLF) in der jvm.config Datei.

Als die mvnw Skript erweitert die Optionen in eine eigentlicher Befehl Der Befehl würde mit einem CR durcheinander gebracht, der ihn vor der Klassenpfadoption aufteilt. Da in diesem Klassenpfad maven-wrapper.jar (mit MaveWrapperMain) übergeben wird, konnte der Java-Befehl die Klasse nicht wirklich abrufen.

Wie habe ich es behoben:

Ich habe einfach die Datei neu erstellt, die nur LFs und keine CRLFs enthält.

Bonus:

Als ich bemerkte, dass dieses CRLF von einem Benutzer eingeführt wurde, der sich auf einem Windows-Computer befand, habe ich einige überprüft Git-Dokumentation Um eine Wiederholung des Problems zu vermeiden, lief Folgendes und riet allen, dasselbe zu tun:

    git config --global core.autocrlf true

Ich hoffe, dies zentralisiert die Schritte, die ich verstreut gefunden habe, und spart am Ende jemandem Zeit.

Benutzeravatar von XSword24
XSword24

In meinem Fall hatte ich das Projekt in einem Ordner gespeichert, der ein Zeichen mit Akzent enthielt (in meinem Fall “á”). Das Entfernen des Akzents hat das Problem behoben.

Benutzeravatar von Badmous
Badmous

Ich habe tatsächlich nur mvn clean installiert und es hat funktioniert, ich verwende tatsächlich eine ältere Version von Spring 2.0, um genau zu sein

1444340cookie-checkHauptklasse org.apache.maven.wrapper.MavenWrapperMain konnte nicht gefunden oder geladen werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy