web-dev-qa-db-fra.com

Création automatique d'un fichier manifeste avec Eclipse pour les fichiers JAR

Comment créer un fichier Manifest pour un groupe de fichiers JAR que j'ai déjà créé.

J'ai utilisé Eclipse pour créer mon fichier JAR.

Existe-t-il un meilleur moyen de créer un fichier JAR comportant un Manifest?

12
ajib

Eclipse fournit des options pour générer un fichier manifeste pour le fichier Jar, enregistrer ce manifeste généré dans le projet ou utiliser un fichier spécifié pour le manifeste. 

J'ai Eclipse 3.4.2 et c'est sur le quatrième écran de ce processus: 

Cliquez avec le bouton droit de la souris sur Projet -> Exporter -> Fichier Java/JAR, Suivant, Spécification du fichier JAR, Suivant, Options d’emballage JAR, Suivant, Spécification du manifeste JAR.

La valeur par défaut consiste simplement à générer un manifeste par défaut pour le fichier JAR, et non à enregistrer le fichier généré dans le projet. Par conséquent, si vous ouvrez votre fichier JAR, il comportera un manifeste, mais il aura simplement quelque chose comme:

Manifest-Version: 1.0

en elle.

Si vous souhaitez modifier vos fichiers JAR existants sans les reconstruire, la solution la plus simple consiste probablement à suivre les instructions de mad-j. Ouvrez-les à l'aide d'un outil Zip et modifiez le fichier /META-INF/MANIFEST.MF existant, puis enregistrez-le. retour dans le pot.

7
Nate

Je viens de rencontrer ce problème aujourd'hui.

Oui, Eclipse va créer le manifeste pour vous, mais c'est vraiment une blague.

Il ne comprend que la ligne Manifest-Version: 1.0. Je n'ai pas compris comment lui faire ajouter ma classe Main. J'ai donc créé mon propre fichier MANIFEST.MF et l'a ajouté à mon répertoire principal (pas src ni lib). Ensuite, lorsque je clique sur Exporter> Fichier JAR, cliquez sur Suivant jusqu'à la fin (ne cliquez pas sur Terminer trop tôt), puis cliquez sur l'option permettant de sélectionner manifeste à partir du projet. Sélectionnez le fichier Manifest que vous venez d'ajouter à votre projet. Assurez-vous que le manifeste a le chemin d'accès à votre classe Main (par exemple, com.company, etc.). Par exemple, voici à quoi ressemblerait un fichier Manifest de base:

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: MyPackage.MyClass

J'ai essayé la méthode de @ Michael mais je me suis retrouvé avec aucun fichier de classe dans mon fichier JAR et uniquement des fichiers Manifest ... ah bon. Ma méthode ci-dessus fonctionne bien.

5
user195488

Avec Ant, vous pouvez utiliser jar task . Il a une option manifest pour spécifier tous les attributs à inclure. Quelque chose comme ça:

  <target name="create-my-jar">
     <jar jarfile="foo.jar" basedir="bin/classes">      
        <manifest>
        <attribute name="Class-Path" value="xxx"/>
        <attribute name="Ant-Version" value="${ant.version}"/> 
        <attribute name="Created-By" value="JDK ${Java.version} (${Java.vendor})"/>
        <attribute name='Specification-Title' value='xxx' />
        <attribute name='Specification-Version' value='xxx' />
        <attribute name='Specification-Vendor' value='xxx' />
        <attribute name='Implementation-Title' value='xxx' />
        <attribute name='Implementation-Version' value='xxx' />
        <attribute name='Implementation-Vendor' value='xxx' />
        <attribute name='Implementation-Vendor-Id' value='xxx' />
        <attribute name='Implementation-Vendor-URL' value='xxx' />
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name='Build-Date' value='xxx'/>
        <attribute name='Build-Time' value='xxx'/>              
        </manifest>
        </jar>
   </target>
3
JuanZe

Un manifeste est un simple fichier texte, Le tutoriel de Sun décrit son contenu en détail.

Tout ce que vous avez à faire est de créer un tel fichier et mettre à jour les fichiers JAR avec cette commande:

jar cfm <jar-file> <manifest-addition>
3
Michael Borgwardt

En utilisant Eclipse, sur la page Spécification du manifeste JAR en bas, vous trouverez une zone de texte dans laquelle vous pouvez rechercher votre classe Main . Accédez à votre Main class et cliquez sur Terminer . Cela génère le manifeste AVEC les informations de la classe principale permettant l'exécution du fichier jar. -Dev On

0
Kenneth V

Un fichier manifeste par défaut est créé lorsque vous créez une jar à l'aide de jar cf jar-file inputs-files.

0
João Silva

Les fichiers manifestes sont des fichiers texte. Et comme les fichiers JAR sont en fait des fichiers Zip, vous pouvez également ajouter le manifeste à l'aide d'un outil tel que 7-Zip . Cela ne fonctionne pas pour les JAR signés, bien sûr.

0
Joonas Pulakka

Vous pouvez également consulter cette documentation, ce qui m'a aidé à résoudre le problème à l'aide de l'assistant Eclipse.

Voir la documentation Eclipse

0
Reedyseth