Ich habe ein einfaches Java-Programm (maven with pom) erstellt, das, wenn ich einen Befehl mit CMD ausführte, unter dem angegebenen Pfad eine Datei erstellt ... Ich mache mvn clean install
.__ erstellte jar von der Kommandozeile aus wie folgt:
Java -jar "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create
Was sollte mein Programm ausführen (dies ist das erste Mal, dass ich so etwas versuche ...)
Aber der Fehler, den ich bekomme, ist:
no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar
Was könnte hier fehlen? welches Manifestattribut ?
Der Fehler kommt nicht von der Klasse, die ich erstellt habe …
ich habe einige META-INF/MANIFEST.MF erstellt, die nicht helfen, aber vielleicht ist es falsch
Wenn Sie das Maven Assembly-Plug-In verwenden oder Ihr IDE -Tooling ist, benötigen Sie ein mainClass
-Element. Das ist was ich benutze:
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.foo.MyMainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-Assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Ein Manifest ist eine Datei im Pfad META-INF/MANIFEST.MF innerhalb der JAR-Datei, die Attribute wie den Klassenpfad und die Hauptklasse zum Ausführen der JAR-Datei definiert.
Die Grundstruktur wäre wie folgt:
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
Sie können Ihren Einstiegspunkt definieren, indem Sie die Eigenschaft Main-Class: classname
hinzufügen.
Um Ihre JAR-Datei mit einem bestimmten Manifest zu erstellen, können Sie:
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
, um manuell ein jar mit dem angegebenen Manifest und den angegebenen Klassen zu erstellen.Mehr über die Jar-Manifestdatei erfahren Sie hier.
in meinem Fall habe ich Spring-Boot verwendet, aber ich habe meinen Builder nicht in meinem Pom erwähnt, also habe ich ihn behoben:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Sie benötigen eine Hauptklasse, um Ihre Anwendung auszuführen. Versuche Folgendes. Es hat bei mir funktioniert.
Fügen Sie der Datei pom.xml den folgenden Codeausschnitt hinzu, wenn Sie das Maven-Build-Tool verwenden.
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.validator.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-Assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>