85 votes

Pourquoi il a échoué à charger main-class manifest attribut à partir d’un fichier JAR ?

J'ai créé un fichier JAR de cette façon, jar cf jar-file input-files. Maintenant, j'essaie de l'exécuter. Cela ne fonctionne pas (jre de commande n'est pas trouvé):

jre -cp app.jar MainClass

Cela ne fonctionne pas, soit:

java -jar main.jar

(Échec du chargement Principal de la Classe manifeste de l'attribut de main.jar).

J'ai aussi découvert que

Pour exécuter une application emballé comme un Fichier JAR (version 1.2-exige de Principal Classe de manifeste en-tête)

Qu'est-ce que le "Principal-Classe manifeste en-tête"? Comment puis-je créer et où dois-je les mettre?

62voto

Jon Skeet Points 692016

Je ne suis pas sûr que je crois que vos symptômes:

  • Si l' jre commande n'est pas trouvée, puis en exécutant jre -cp app.jar devrait donner le même message d'erreur
  • Juste l'ajout d'un POT de fichier dans le chemin de classe ne devrait pas donner l'erreur que vous voyez

Je m'attends à vous de voir cette erreur si vous exécutez:

java -jar app.jar

La Principale Classe d'en-tête doit être dans le manifeste pour le fichier JAR - ce sont des métadonnées à propos de choses comme les autres bibliothèques. Voir la documentation de Sun pour comment créer un manifeste approprié. Fondamentalement, vous devez créer un fichier texte qui comprend une ligne comme ceci:

Main-Class: MainClass

Ensuite, exécutez

jar cfm app.jar manifest.txt *.class

35voto

weirdLabs Points 311
  1. définir le classpath et le compiler

    javac -classpath "C:\Program Files\Java\jdk1.6.0_updateVersion\tools.jar" yourApp.java

  2. créer mainifest.txt

    Principal-Catégorie: yourApp retour à la ligne

  3. créer yourApp.jar

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. exécuter yourApp.jar

    java-jar yourApp.jar

9voto

Dainius Points 652

Vous pouvez exécuter avec :

Ça marche pour moi si il n’y a aucun manifeste dans le fichier JAR.

6voto

Sridhar-Sarnobat Points 965

J’ai eu cette erreur, et c’était parce que j’ai eu les arguments dans le mauvais ordre :

CORRIGER

MAL

1voto

Oliver Michels Points 1129

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X