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.

5voto

KarthikPon Punkte 149

Ich hatte das gleiche Problem und jetzt ist es behoben:) Befolgen Sie einfach die folgenden Schritte. Der Fehler könnte bei allem liegen, aber die untenstehenden Schritte erleichtern den Prozess. Ich habe viel Zeit damit verbracht, die Lösung zu finden.

1. Versuchen Sie, Eclipse neu zu starten (wenn Sie Eclipse zum Erstellen der JAR-Datei verwenden) --> Tatsächlich hat mir dies geholfen, das Problem beim Exportieren der JAR-Datei ordnungsgemäß zu lösen.

2. Nach dem Neustart von Eclipse sehen Sie nach, ob Eclipse in der Lage ist, die Hauptklasse/den Hauptmethode Ihres Java-Projekts zu erkennen --> Rechtsklick --> Ausführen als --> Ausführungskonfigurationen --> Haupt --> Klicken Sie auf die Schaltfläche "Suchen", um zu überprüfen, ob Eclipse Ihre Hauptklasse in der JAR-Datei finden kann. --> Dies dient der Validierung, dass die JAR-Datei den Einstiegspunkt zur Hauptklasse hat.

  1. Nach diesem Schritt exportieren Sie Ihr Java Dynamic-Projekt als "Ausführbare JAR"-Datei und nicht als JAR-Datei.

  2. In der Java-Startkonfiguration wählen Sie Ihre Hauptklasse aus.

  3. Nach dem Exportieren der JAR-Datei verwenden Sie den unten stehenden Befehl zum Ausführen. java -cp [Ihre JAR].jar [komplettes Paket].MainClass Beispiel: java -cp AppleTCRuleAudit.jar com.apple.tcruleaudit.classes.TCRuleAudit

  4. Möglicherweise erhalten Sie einen Fehler aufgrund einer nicht unterstützten Java-Version. Die Lösung besteht darin, die java_home in Ihrem Shell-Bash-Profil so anzupassen, dass sie mit der in Eclipse verwendeten Java-Version übereinstimmt, mit der das Projekt kompiliert wurde.

Ich hoffe, das hilft! Lassen Sie mich bitte wissen, wenn Sie immer noch Probleme haben.

4voto

Lonely Solitary Punkte 139

Für meinen Fall ist das Problem, dass unter dazu führt, dass Dinge nicht richtig funktionieren.

Meine ursprüngliche pom.xml:

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

Nachdem ich entfernt habe, ist der Fehler verschwunden.

4voto

Shekh Akther Punkte 723

Ein ausführbares JAR-Datei sollte entweder durch Klicken oder durch Ausführen über die Befehlszeile ausgeführt werden, z. B. java -jar app.jar (Verwenden Sie "wenn der Pfad der JAR Leerzeichen enthält" - d.h. java -jar "C:\Ordnername\app.jar"). Wenn Ihr ausführbares JAR nicht läuft, bedeutet dies, dass es nicht ordnungsgemäß erstellt wurde.

Zur besseren Verständnis, extrahiere die JAR-Datei (oder zeige sie mit einem beliebigen Tool an, für Windows ist 7-Zip ein gutes Tool) und überprüfe die Datei unter /META-INF/MANIFEST.MF. Wenn du einen Eintrag wie

Main-Class: your.package.name.ClaaswithMain - findest, dann ist es gut, ansonsten musst du es bereitstellen.

Achte darauf, den Eintrag Main-Class in der MANIFEST.MF-Datei anzuhängen, überprüfe wo du sie speicherst!

4voto

satheesh.v Punkte 49

Sie haben die Jar-Datei möglicherweise nicht ordnungsgemäß erstellt:

z.B.: fehlende Option m bei der Erstellung der Jar-Datei

Das Folgende funktioniert:

jar -cvfm MyJar.jar Manifest.txt *.class

4voto

Koneri Punkte 297

Sie können einfach diesen Schritt befolgen Erstellen Sie eine Jar-Datei mit

 jar -cfm jar-dateiname manifest-dateiname Klassendateiname

Beim Ausführen der Jar-Datei einfach wie folgt ausführen

 java -cp jar-dateiname main-klassenname

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