webentwicklung-frage-antwort-db.com.de

Java-Jar ausführen - kein Hauptmanifestattributfehler

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

7
Jenny Hilton

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>
8
Kevin Boone

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:

  1. Verwenden Sie Ihre IDE, um ein Manifest zu dem erzeugten Jar hinzuzufügen.
  2. Verwenden Sie einen Befehl wie jar cfm MyJar.jar Manifest.txt MyPackage/*.class, um manuell ein jar mit dem angegebenen Manifest und den angegebenen Klassen zu erstellen.
  3. Dekomprimieren Sie das Glas manuell, fügen Sie das Manifest hinzu und komprimieren Sie es erneut. Komprimierungswerkzeuge können dies im Allgemeinen per Drag/Drop durchführen.

Mehr über die Jar-Manifestdatei erfahren Sie hier.

4
alirabiee

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>
2
saman

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>
1
Dulith De Costa