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
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>
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:
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
pour créer manuellement un fichier jar avec le manifeste et les classes donnés.Vous pouvez en savoir plus sur le fichier de manifeste de jar ici.
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>