Exécuter java jar - aucune erreur d'attribut de manifeste principal
j'ai créé un programme java simple (maven avec pom ) qui, lorsque j'exécute une commande avec CMD, devrait créer un fichier sous un chemin donné... Je ne mvn clean install
qui finissent avec succès,
Maintenant je veux utiliser ce jar créé à partir de la ligne de commande comme suit:
java -jar "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create
Qui doit exécuter mon programme (ce la première fois que j'essaie quelque chose comme ça...)
Mais l'erreur qui Im obtenir est:
no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar
Qu'est-ce qui pourrait manquer ici ? qui attribut du Manifeste?
L'erreur ne vient pas de la classe que j'ai créé...
j'ai créé du META-INF/MANIFEST.MF n'aide pas mais peut-être est-ce mal!--4-->
3 réponses
si vous utilisez le plug-in Maven assembly, ou votre outil IDE, vous avez besoin d'un mainClass
élément. 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 comme classpath et la classe principale pour exécuter le 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
.
afin de créer votre fichier jar avec un manifeste, vous pouvez:
- utilisez votre IDE pour ajouter un manifeste au bocal qu'il génère.
- utilisez un commande de la forme
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
pour créer manuellement un bocal avec le manifeste et les classes. - décompresser manuellement le bocal, ajouter le manifeste et le compresser à nouveau. Les outils de Compression peuvent généralement faire cela avec une traînée/goutte.
Vous pouvez en savoir plus sur le fichier manifest jar ici.
dans mon cas, j'utilisais le spring-boot mais je n'ai pas mentionné mon constructeur dans ma pom donc je l'ai corrigé par:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>