Modification d'un jar

Résolu/Fermé
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 novembre 2009 - 29 août 2006 à 14:03
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 30 août 2006 à 16:42
Bonjour,



Voici mon problème :

Je souhaite créer un programme java qui puisse ajouter dans un jar existant un fichier texte contenu dans un répertoire quelconque de mon disque. Mon code (Très simplifié) ressemble à ça :

Runtime run = Runtime.getRuntime();
                    Process proc = run.exec(
                            "jar -uf monJar.jar documents\\monfichier.txt");

Le fichier texte est bien ajouté dans le jar, mais pas à la racine... Un répertoire "documents" a été crée et a l'intérieur de celui-ci se trouve mon fichier texte. Or, je voudrais que monfichier.txt soit placé à la racine du jar. Comment lui demander de faire abstraction du répertoire lors de la modification du jar ?

Je ne sais pas si j'ai été clair...

Merci d'avance pour votre patience et vos réponses,

5 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 août 2006 à 16:00
Salut,

ba écoute quand j'ouvre un terminal et que je fais 'jar -uf monJar.jar -C documents monfichier.txt' cela marche impecablement bien, tu as essayé de le faire sans le vilain / a la fin du nom du répertoire ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 août 2006 à 19:38
Salut,

exemple pour ton cas

Runtime run = Runtime.getRuntime();
                    Process proc = run.exec(
                            "jar -uf monJar.jar -C documents monfichier.txt");

quand tu as un doute ouvre une console et tape exemple "jar" tu auras la liste des options dispo et de ce qu'elle font
Usage: jar {ctxu}[vfm0Mi] [jar-file] [manifest-file] [-C dir] files ...
Options:
    -c  create new archive
    -t  list table of contents for archive
    -x  extract named (or all) files from archive
    -u  update existing archive
    -v  generate verbose output on standard output
    -f  specify archive file name
    -m  include manifest information from specified manifest file
    -0  store only; use no ZIP compression
    -M  do not create a manifest file for the entries
    -i  generate index information for the specified jar files
    -C  change to the specified directory and include the following file
If any file is a directory then it is processed recursively.
The manifest file name and the archive file name needs to be specified
in the same order the 'm' and 'f' flags are specified.

Example 1: to archive two class files into an archive called classes.jar:
       jar cvf classes.jar Foo.class Bar.class
Example 2: use an existing manifest file 'mymanifest' and archive all the
           files in the foo/ directory into 'classes.jar':
       jar cvfm classes.jar mymanifest -C foo/ .

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 novembre 2009
30 août 2006 à 15:38
J'ai déjà consulté les options pour la commande jar et j'ai déjà tenté de simuler la commande avec l'invite de commande windows. L'option -C va en effet changer de répertoire mais lors de la modification du jar ce répertoire apparaitra toujours :

Voici la simulation que j'ai faite :
>jar -uf monjar.jar -C documents/ monfichier.txt
Or, monfichier.txt est quand même ajouté dans le jar avec le repertoire "documents". Peut-être alors que j'exécute mal la commande... Je ne sais pas...

Pour l'instant j'ai trouvé une solution temporaire à mon problème en passant par la création d'un fichier batch :

String s = "copy document\\monfichier.txt\n" +
                "jar -uf monjar.jar monfichier.txt\n" +
                "del document";
saveFile(s, "exec.bat");
Process myProcess = Runtime.getRuntime().exec("exec.bat");
File f = new File("exec.bat");
f.delete();

Ma méthode marche mais je pense qu'il y a plus propre... En tout cas merci pour ta réponse Twinuts.

D'autres suggestions ?
0
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 novembre 2009
30 août 2006 à 16:29
Tout ce temps perdu pour un simple slash :S.

Je me suis contenté de reproduire l'exemple donné dans la doc pour jar, à savoir :

Example 2: use an existing manifest file 'mymanifest' and archive all the
           files in the foo/ directory into 'classes.jar':
       jar cvfm classes.jar mymanifest -C foo/ .

Je ne pensais pas que le slash pouvait être la cause de mon problème. Merci ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 août 2006 à 16:42
Salut,

Ba de rien et a l'avenir mais pas de slash en fin de chaine quand tu veux specifier qu'il sagit d'un répertoire les 3/4 du temps c'est cause de problèmes

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous