web-dev-qa-db-fra.com

Exécuter le fichier jar Java - aucune erreur d'attribut du manifeste principal

J'ai créé un simple programme Java (maven with pom) qui, lorsque j'exécute une commande avec CMD, devrait créer un fichier avec le chemin indiqué ... Je fais mvn clean install créé jar à partir de la ligne de commande comme suit: 

Java -jar   "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create 

Ce qui devrait lancer mon programme (c'est la première fois que j'essaye quelque chose comme ça…)

Mais l'erreur que je reçois est la suivante:

no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar

Que pourrait-il manquer ici? quel attribut manifeste

L'erreur ne provient pas de la classe que j'ai créée ...

j'ai créé des fichiers META-INF/MANIFEST.MF qui ne m'aident pas, mais qui sont peut-être dans l'erreur

7
Jenny Hilton

Si vous utilisez le plug-in Maven Assembly ou votre outil IDE, vous avez besoin d'un élément mainClass. C'est ce que j'utilise:

<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

Un manifeste est un fichier du chemin META-INF/MANIFEST.MF dans le jar qui définit des attributs tels que le chemin de classe et la classe principale pour l'exécution du fichier jar.

La structure de base serait comme:

Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)

Vous pouvez définir votre point d’entrée en ajoutant la propriété Main-Class: classname.

Pour créer votre fichier jar avec un manifeste donné, vous pouvez:

  1. Utilisez votre IDE pour ajouter un manifeste au jar qu'il génère.
  2. Utilisez une commande telle que jar cfm MyJar.jar Manifest.txt MyPackage/*.class pour créer manuellement un fichier jar avec le manifeste et les classes donnés.
  3. Décomprimez manuellement le pot, ajoutez le manifeste et compressez-le à nouveau. Les outils de compression peuvent généralement le faire avec un glisser/déposer.

Vous pouvez en savoir plus sur le fichier de manifeste de jar ici.

4
alirabiee

dans mon cas, j'utilisais spring-boot mais je n'avais pas mentionné mon constructeur dans mon pom alors je l'ai corrigé par:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
2
saman