1312 Stimmen

Kann JAR-Datei nicht ausführen: "kein Hauptmanifestattribut"

Ich habe eine Anwendung installiert, wenn ich versuche, sie auszuführen (es handelt sich um ein ausführbares Jar), passiert nichts. Wenn ich es von der Befehlszeile ausführe mit:

java -jar "app.jar"

Ich bekomme die folgende Meldung:

kein Hauptmanifestattribut in "app.jar"

Normalerweise, wenn ich das Programm selbst erstellt hätte, hätte ich ein Hauptklassenattribut zur Manifestdatei hinzugefügt. Aber in diesem Fall, da die Datei von einer Anwendung stammt, kann ich das nicht tun. Ich habe auch versucht, das Jar zu extrahieren, um zu sehen, ob ich die Hauptklasse finden könnte, aber es gibt zu viele Klassen und keine von ihnen hat das Wort "main" in ihrem Namen. Es muss einen Weg geben, das zu beheben, denn das Programm läuft einwandfrei auf anderen Systemen.

1voto

Jesvin Vijesh S Punkte 609

Wenn Sie Maven verwenden und Ihr pom.xml so aussieht

      4.0.0

        org.springframework.boot
        spring-boot-starter-parent
        2.4.3

      com.example
      demo
      0.0.1-SNAPSHOT
      demo

        11

              org.springframework.boot
              spring-boot-maven-plugin

kommentieren Sie einfach das pluginManagement und Sie erhalten das folgende pom.xml

      4.0.0

        org.springframework.boot
        spring-boot-starter-parent
        2.4.3

      com.example
      demo
      0.0.1-SNAPSHOT
      demo

        11

            org.springframework.boot
            spring-boot-maven-plugin

1voto

Mukit09 Punkte 2756

Ich habe den gleichen Fehler erhalten, als ich mvn package ausgeführt habe. So habe ich das Problem gelöst.

Ich habe das maven-multi-module verwendet. Ich hatte dieses Problem, weil ich den folgenden Abschnitt versehentlich im übergeordneten POM hinzugefügt habe.

    org.springframework.boot
    spring-boot-maven-plugin

Dann, nachdem ich dies im POM der Untermodelle hinzugefügt und aus dem übergeordneten POM entfernt habe, wurde mein Problem gelöst.

0voto

cem Punkte 169

Sie können es einfach in das Eigenschaften-Tag hinzufügen. Dies funktioniert auch, wenn Sie mehrere Untermodule haben, fügen Sie es für jedes Untermodule pom.xml hinzu

Hier ist meine pom.xml,

    11
    com.sample.MyApplication

0voto

MobileEvangelist Punkte 2503

Fügen Sie dies einfach zu Ihrer java-Modul-Build-Datei build.gradle hinzu. Es wird eine ausführbare Jar-Datei erstellen. Es werden abhängige Bibliotheken im Archiv enthalten sein.

jar {
  manifest { 
    attributes "Main-Class": "com.company.application.Main"
  }  

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

Dies führt zur Erstellung der Datei [module_name]/build/libs/[module_name].jar. Ich habe dies mit der Shell getestet.

0voto

Lumito Punkte 462

Erstellen Sie den Ordner META-INF und die Datei MANIFEST.MF in diesem Ordner mit diesem Inhalt:

Manifest-Version: 1.0
Class-Path: .
Main-Class: [IHRE_HAUPTKLASSE]

Kompilieren Sie dann unter Einbeziehung dieser Manifestdatei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X