OVH Cloud OVH Cloud

Signer un jar executable

3 réponses
Avatar
euler
Bonjour

ça fait un moment que je recherche comment pouvoir signer un jar
"executable", sans succès.

Le problème est simple à exposer.

J'ai un jar file avec un manifest créé à la main qui contient deux lignes

Main-Class: <ma classe avec la méthode main>
Class-Path: <le path spécifique à cette applic>

Je peux sans problème lancer ce jar avec java -jar <jarfile>

Ensuite, je veux signer le jar avec jarsigner...

jarsigner -signedjar <jar signé> <jar non signé> <mon alias>

et j'obtiens alors un jar signé mais dont le manifest ne contient plus les
deux lignes que j'avais mises pour le rendre exécutable...

Y'a-t-il un tuto qqpart pour résoudre ce prob ? j'ai rien trouvé pour
l'instant..

d'avance merci de votre aide

3 réponses

Avatar
Miko le pepe
http://java.sun.com/docs/books/tutorial/jar/sign/signing.html
n'en dit pas beaucoup plus...
...et les liens sur les exemples sont foireux merci,Sun...
Avatar
euler
Miko le pepe wrote:

http://java.sun.com/docs/books/tutorial/jar/sign/signing.html
n'en dit pas beaucoup plus...
...et les liens sur les exemples sont foireux merci,Sun...


ben j'avais lu ce document, mais j'ai pas trouvé ce que je voulais... y'a
plein d'exemples pour signer des jar sur le web, y'en a plein d'autres pour
les rendres exécutables, mais aucun mélangeant les deux (enfin je n'en ai
trouvé aucun)...

merci

Avatar
Miko le pepe
en creusant on trouve...
cette page donne des explications en français:
http://javarome.free.fr/net/Signature.html
celle-ci en anglais:
http://www.jensign.com/JavaScience/www/executejar/
et chez Sun:
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html
(voir le § concernant les jars signés...)
j'ai testé avec une classe HelloWorld et un fichier MANIFEST.MF avec les
deux lignes suivantes:
Main-Class: HelloWorld
Class-Path: .
création du jar:
jar cmf MANIFEST.MF Hello.jar HelloWorld.class
le jar est créé, le MANIFEST.MF est modifié:
les lignes
Manifest-Version: 1.0
et Created-By: 1.4.2_04 (Sun MicroSystems Inc.)
sont rajoutées.
Avec l'outil keytool, je crée ensuite la clé:
keytool -genkey -alias toto -keystore cle.txt -keypass MotdePasse
je réponds aux questions, la clé est générée.
On peut maintenant signer le jar:
jarsigner -keystore cle.txt -signedjar Hellosigne.jar Hello.jar toto
le MANIFEST.MF est encore modifié(version finale):
Manifest-Version: 1.0
Class-Path: .
Created-By: 1.4.2_04 (Sun Microsystems Inc.)
Main-Class: HelloWorld

Name: HelloWorld.class
SHA1-Digest: a1gxO7R53Dk179tPR0r8WoLJefI à noter que Class-Path et Main-Class sont toujours présents... chez moi...

Si ton problème est l'exécution du .jar il faut le tester en ligne de
commande.