JAR-Datei kann nicht ausgeführt werden: „no main manifest attribute“

Lesezeit: 6 Minuten

JAR Datei kann nicht ausgefuhrt werden „no main manifest attribute
Ewoud

Ich habe eine Anwendung installiert, wenn ich versuche, sie auszuführen (es ist eine ausführbare JAR-Datei), passiert nichts. Wenn ich es über die Befehlszeile ausführe mit:

java -jar “app.jar”

Ich bekomme folgende Meldung:

kein Hauptmanifestattribut, in “app.jar”

Wenn ich das Programm selbst erstellt hätte, hätte ich normalerweise ein Hauptklassenattribut zur Manifestdatei hinzugefügt. Aber in diesem Fall kann ich das nicht tun, da die Datei aus einer Anwendung stammt. Ich habe auch versucht, das Glas zu extrahieren, um zu sehen, ob ich die Hauptklasse finden kann, aber es gibt zu viele Klassen und keine von ihnen hat das Wort “Haupt” im Namen. Es muss eine Möglichkeit geben, dies zu beheben, da das Programm auf anderen Systemen einwandfrei läuft.

  • Suchen Sie nach Hauptmethoden; Sie können sich nicht auf Klassennamen verlassen.

    – David Newton

    13. März 2012 um 18:22 Uhr

  • Ich weiß, aber da ich nur .class-Dateien habe, kann ich die Methoden nicht wirklich sehen. Oder kann ich?

    – Ewud

    13. März 2012 um 18:42 Uhr

  • Du schreibst die Anführungszeichen nicht wirklich, oder? In jedem Fall gibt es eine Reihe von Möglichkeiten, Methoden anzuzeigen, einschließlich der Verwendung javap. Vielleicht möchten Sie es jedoch entpacken und nachsehen, ob es tatsächlich kein Manifest gibt.

    – David Newton

    13. März 2012 um 19:37 Uhr

  • Verwandte: mit Abhängigkeiten: stackoverflow.com/a/23986765/360211

    – Westen

    13. September 2015 um 7:37 Uhr

  • Was ist, wenn ich keine Hauptklasse habe, da ich den Code mit CommandLineJobRunner ausführe?

    – Kamini

    2. Juni 2017 um 14:01 Uhr

Das hätte sein sollen java -jar app.jar anstatt java -jar "app".

Die -jar Die Option funktioniert nur, wenn die JAR-Datei eine ausführbare JAR-Datei ist, was bedeutet, dass sie eine Manifestdatei mit einer Main-Class Attribut darin. Sehen Packen von Programmen in JAR-Dateien um zu erfahren, wie man ein ausführbares JAR erstellt.

Wenn es sich nicht um eine ausführbare JAR-Datei handelt, müssen Sie das Programm mit etwas wie dem folgenden ausführen:

java -cp app.jar com.somepackage.SomeClass

wo com.somepackage.SomeClass ist die Klasse, die die enthält main Methode zum Ausführen des Programms. (Was diese Klasse ist, hängt vom Programm ab, es ist unmöglich, anhand der von Ihnen bereitgestellten Informationen zu erkennen).

  • vielen Dank für Ihre Antwort, aber Ihre Lösung funktioniert nur, wenn ich den Namen der Klasse kenne, die die Hauptmethode enthält. Und es war ein Tippfehler … Es sollte “app.jar” heißen. Aber wie erklären Sie, warum es auf anderen Systemen läuft, indem Sie einfach auf die Datei doppelklicken?

    – Ewud

    13. März 2012 um 18:45 Uhr

  • Wenn es sich tatsächlich um eine ausführbare JAR-Datei handelt, können Sie die Manifestdatei extrahieren (sie befindet sich in der META-INF Verzeichnis innerhalb der JAR-Datei). Es sollte eine enthalten Main-Class Attribut, das Ihnen den Namen der Hauptklasse gibt.

    – Jesper

    14. März 2012 um 6:21 Uhr

  • Wenn es auf einem System läuft, dann hat dieses System vielleicht eine zu alte Java-Version. Wenn das JAR beispielsweise mit Java 7 kompiliert ist, können Sie es nicht auf einem System mit Java 6 oder älter ausführen.

    – Jesper

    14. März 2012 um 6:23 Uhr

  • Das ist lustig, da auf dem anderen System Win7 läuft und auf diesem PC mit den Problemen Win8.

    – Ewud

    15. März 2012 um 17:42 Uhr

  • @Jesper Hallo, was ist, wenn Eclipse das Standardpaket verwendet? Soll ich nur den Klassennamen eingeben?

    – Gen

    18. Juli 2014 um 5:08 Uhr

  • Perfekt, das funktioniert. Es bündelt alle Abhängigkeiten in einem JAR, sodass Sie ein Projekt kompilieren/erstellen und sofort ausführen können.

    – Paulus

    26. Juli 2015 um 19:08 Uhr


  • Im Rahmen der Schatten-Pluginman muss der Hilfe bei folgen Ausführbares JAR.

    – koppor

    6. September 2017 um 8:40 Uhr

  • Dies mit maven-assembly-plugin hat funktioniert. maven-jar-plugin nicht.

    – Martynas Jusevičius

    7. Dezember 2018 um 21:25 Uhr

  • Hinweis: Geben Sie diesen Code in Ihre ein pom.xml Datei drin <build><plugins> PUT IT HERE </plugins></build> und führen Sie dann maven Package aus (öffnen Sie in IDEA das Maven-Schiebemenü auf der rechten Seite, suchen Sie nach Projekt > Lebenszyklus > Paket). Dann befindet sich Ihre JAR-Datei im Zielordner . Prost!

    – Kirill Karmazin

    10. Dezember 2018 um 12:10 Uhr

  • Ich hatte wirklich Probleme mit diesem Problem … Das funktioniert perfekt. Danke!

    – jmojico

    1. Februar 2019 um 2:38 Uhr

1646642230 269 JAR Datei kann nicht ausgefuhrt werden „no main manifest attribute
Sasanka Panguluri

Das liegt daran, dass Java das Main-Attribut in der Datei MANIFEST.MF nicht finden kann. Das Main-Attribut ist notwendig, um Java mitzuteilen, welche Klasse es als Einstiegspunkt der Anwendung verwenden soll. Innerhalb der JAR-Datei befindet sich die Datei MANIFEST.MF im Ordner META-INF. Sie fragen sich, wie Sie sehen könnten, was sich in einer JAR-Datei befindet? Öffnen Sie die JAR-Datei mit WinRAR.

Das Hauptattribut in MANIFEST.MF sieht folgendermaßen aus:

Main-Class: <packagename>.<classname>

Sie erhalten diesen Fehler „kein Hauptmanifestattribut“, wenn diese Zeile in der Datei MANIFEST.MF fehlt.

Es ist wirklich ein großes Durcheinander, dieses Attribut in der Datei MANIFEST.MF anzugeben.

Update: Ich habe gerade eine wirklich nette Möglichkeit gefunden, den Einstiegspunkt der Anwendung in Eclipse anzugeben. Wenn Sie Export sagen,

Select Jar and next 

[ give it a name in the next window ] and next

and next again

and you'll see " Select the class of the application entry point".

Just pick a class and Eclipse will automatically build a cool MANIFEST.MF for you.

Geben Sie hier die Bildbeschreibung ein

JAR Datei kann nicht ausgefuhrt werden „no main manifest attribute
Naga Srinu Kapusetti

Ich hatte das gleiche Problem. durch Hinzufügen der folgenden Zeilen zur pom-Datei hat es funktioniert. Das Plugin stellt den Erstellungsprozess Ihrer Anwendung mit allen erforderlichen Schritten sicher.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1646642233 922 JAR Datei kann nicht ausgefuhrt werden „no main manifest attribute
Morgen Stern

Ich hatte dieses Problem beim Erstellen einer JAR-Datei mit IntelliJ IDEA. Sehen diese Diskussion.

Was es für mich gelöst hat, war, das JAR-Artefakt neu zu erstellen, JAR > Von Modulen mit Abhängigkeiten auszuwählen, aber das Standardverzeichnis für META-INF/MANIFEST.MF nicht zu akzeptieren. Ändern Sie es von -/src/main/java in -/src/main/resources.

Andernfalls wurde eine Manifest-Datei in das JAR aufgenommen, aber nicht die in -/src/main/java, die es haben sollte.

  • Das hat bei mir mit IDEA 14.1.6 funktioniert. Ich habe auch die build-Eigenschaft für pom.xml hinzugefügt, aber es hatte keine Auswirkung. Aber deine Antwort hat es gelöst, danke.

    – lsrom

    30. Oktober 2016 um 22:34 Uhr

  • Danke, dass Sie meinen Desktop davor bewahrt haben, durch die reine Frustration, dass nichts anderes funktioniert, verbeult zu werden 😉 Ihr Link scheint defekt zu sein, aber ich kann bestätigen, dass dies perfekt funktioniert. Getestet mit IntelliJ IDEA 2018.2.5 (Community Edition)

    – Matthias Bö

    12. November 2018 um 13:42 Uhr

  • bestätigt, dass dies funktioniert, obwohl ich kein Verzeichnis /resources habe

    – lxknvlk

    4. Oktober 2019 um 16:37 Uhr

  • defekter Link, meinst du https://stackoverflow.com/questions/20952713/wrong-manifest-mf-in-intellij-idea-created-jar?

    – Ben

    4. September 2020 um 8:12 Uhr

964440cookie-checkJAR-Datei kann nicht ausgeführt werden: „no main manifest attribute“

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

Privacy policy