web-dev-qa-db-fra.com

Pourquoi n'a-t-il pas pu charger l'attribut manifeste de la classe principale à partir d'un fichier JAR?

J'ai créé un fichier JAR de cette manière jar cf jar-file input-files. Maintenant, j'essaye de l'exécuter. Son exécution ne fonctionne pas (la commande jre est introuvable):

jre -cp app.jar MainClass

Cela ne fonctionne pas non plus:

Java -jar main.jar

(Impossible de charger l'attribut manifeste Main-Class à partir de main.jar).

J'ai aussi découvert que

Pour exécuter une application packagée en tant que Fichier JAR (version 1.2 - requiert l'en-tête de manifeste Main-Class)

Qu'est-ce que "l'en-tête de manifeste Main-Class"? Comment puis-je le créer et où le mettre?

85
Roman

Je ne suis pas sûr de croire vos symptômes:

  • Si la commande jre n'est pas trouvée, l'exécution de jre -cp app.jar devrait générer la même erreur.
  • Ajouter simplement un fichier JAR au chemin de classe ne devrait pas donner l'erreur que vous voyez

Je m'attendrais à ce que vous voyiez cette erreur si vous exécutez:

Java -jar app.jar

L'en-tête Main-Class doit figurer dans le manifeste du fichier JAR. Il s'agit de métadonnées sur des éléments similaires à d'autres bibliothèques obligatoires. Consultez la documentation Sun pour savoir comment créer un manifeste approprié. En gros, vous devez créer un fichier texte contenant une ligne comme celle-ci:

Main-Class: MainClass

Puis courir

jar cfm app.jar manifest.txt *.class
62
Jon Skeet
  1. définir le classpath et compiler

    javac -classpath "C:\Programmes\Java\jdk1.6.0 _ updateVersion \ tools.jar" votreApp.Java

  2. créer un fichier manifest.txt

    Main-Class: yourApp newline

  3. créez votreApp.jar 

    jar cvf0m votreApp.jar manifeste.txt votreApp.class

  4. lancez votreApp.jar

    Java -jar votreApp.jar

35
weirdFactory

Vous pouvez courir avec:

Java -cp .;app.jar package.MainClass

Cela fonctionne pour moi s'il n'y a pas de manifeste dans le fichier JAR.

9
Dainius

J'ai eu cette erreur, et c'est parce que j'avais les arguments dans le mauvais ordre:

CORRECT

Java maui.main.Examples tagging -jar maui-1.0.jar 

FAUX

Java -jar maui-1.0.jar maui.main.Examples tagging 
6
Sridhar-Sarnobat

Le moyen le plus simple de vous assurer que vous avez créé le fichier JAR exécutable correctement, avec le fichier manifeste approprié, consiste à utiliser Eclipse pour le construire à votre place. Dans votre projet Eclipse, il vous suffit simplement de sélectionner Fichier/Exporter dans le menu et de suivre les instructions. 

De cette façon, vous pouvez être sûr que votre fichier JAR est correct et saurez s'il vous plaît regarder ailleurs s'il reste un problème. Le processus est décrit en détail dans FAQ Comment créer un fichier JAR exécutable pour un programme SWT autonome?.

1
Greg Burdett

Essayer

Java -cp .:mail-1.4.1.jar JavaxMailHTML 

pas besoin d'avoir le fichier manifest.

0
user4581964

Si votre chemin de classe est entièrement spécifié dans le manifeste, Peut-être avez-vous besoin de la dernière version de l'environnement d'exécution Java .. 

0
AmirHossein Rezaei

J'ai découvert que j'avais également cette erreur dans NetBeans. J'espère que ce qui suit est utile.

  1. Assurez-vous que lorsque vous accédez à Configuration du projet, vous définissez la classe principale que vous souhaitez exécuter.
  2. Faire une construction ou une construction propre
  3. Placez le fichier jar où vous le souhaitez et essayez à nouveau: Java -jar "YourProject.jar" sur la ligne de commande.

C'était le problème que je rencontrais car j'avais d'autres programmes de test que j'utilisais dans NetBeans et je devais m'assurer que la classe Main sous la partie Run de la configuration du projet était correctement définie.

beaucoup de bénédictions, John P

0
john p

Si vous utilisez Eclipse, essayez ci-dessous: 1. Cliquez avec le bouton droit sur le projet -> sélectionnez Exporter 2. Sélectionnez Fichier JAR pouvant être exécuté dans la liste des destinations d'exportation 3. Entrez le nom du fichier et sélectionnez "Package required ..." (deuxième bouton radio) -> Terminer

J'espère que cela t'aides...!

0
Barani r