Ich versuche, ein Projekt mit OptaPlanner 6.0.1-Bibliotheken über das JAR-Artefakt von IntelliJ IDEA in eine JAR-Datei zu packen, aber anstelle meiner manifest.mf, die den Standard enthält
Manifest-Version: 1.0
Main-Class: a.b.c.app
Das Glas verwendet das in ecj-3.7.2.jar, einer der unterstützenden Bibliotheken von OptaPlanner, bereitgestellte:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Aus diesem Grund tritt "no main manifest attribute, in appname.jar"
beim Versuch, die App auszuführen , ein Fehler auf. Wenn ich das Manifest in der JAR-Datei manuell durch meine ersetze, funktioniert alles korrekt. Kann ich irgendetwas tun, um das zu beheben?
Ich behalte die Bibliotheken in einem separaten / lib-Verzeichnis und sie wurden dem Stammverzeichnis des JAR-Artefakts als Extracted Directory hinzugefügt. IntelliJ IDEA ist v13.0.1.
java
intellij-idea
optaplanner
Grudolf
quelle
quelle
Antworten:
Ich hatte das gleiche Problem.
Stellen Sie sicher, dass sich Ihre MANIFEST.MF in:
NICHT
quelle
Reparieren:
quelle
Wie in @ grudolfs Kommentar in einer der anderen Antworten erwähnt, besteht eine Möglichkeit, dies zu tun (und die einzige, die in einem importierten Gradle-Projekt für mich funktioniert hat) darin, ein leeres Glas wie folgt zu erstellen:
AKTUALISIEREN:
Dies ist definitiv ein Fehler in Idea. Diese verknüpfte Antwort funktioniert zuverlässig, wenn extrahierte Verzeichnisse vorhanden sind. Im Wesentlichen finden Sie Ihre .idea / JARNAME.xml. Fügen Sie das folgende Element ganz oben im
<root>
Element für Ihr Glas hinzu. Alle extrahierten Elemente über Ihrer neuen Dateikopie, die ein Manifest enthalten, blockieren Ihr neues Manifest.quelle
Wenn Sie die Hauptklasse angeben möchten, müssen Sie dieses Plugin zu pom.xml hinzufügen:
quelle
Ich hatte ein ähnliches Problem.
Das Problem war in der Datei pom.xml.
Ich weiß nicht, aus welchem Grund dieser Code in Eclipse funktioniert, aber nicht in IntelliJ
Das ist richtig.
Manifest.mf hat funktioniert !!!
Ich hoffe das hilft.
quelle
Es gibt verschiedene Möglichkeiten, ausführbare Jars zu generieren. Die Verwendung der GUI-Funktion von IntelliJ ist eine gute Möglichkeit. Eine andere Möglichkeit ist die Verwendung von Maven (oder ähnlichem in gradle, buildr usw.), das für Build-Server geeignet ist:
Es ist mehr oder weniger kopierbar aus den Optaplanner-Beispielen Maven Build:
quelle
Um kein Problem wie Manifest zu haben, sollten Sie ein Verzeichnis mit dem Namen "META-INF" im Verzeichnis "src" haben. Erstellen Sie es also und fügen Sie eine Datei mit dem Namen "MANIFEST.MF" mit dem folgenden Inhalt ein:
Nicht zu vergessen, den Paketnamen mit der oben genannten Hauptklasse zu ersetzen!
quelle