Forum Clubic

[XML et JAR]Utiliser des XML dans un JAR

Bonjour,

Je souhaite exporter mon application JAVA en un fichier JAR, le problème c’est que mon application utilise des fichiers XML qu’elle modifie, apparament quand j’exporte mon application, elle ne parvient plus à accéder à ces fichiers, pourtant ils sont dans la racine du projet et j’y accède en faisant par exemple “language.xml”.
Si quelq’un à une solution je suis preneur.
Merci d’avance

Quand il est dans le jar, tu n’y accès pas en tant que fichier, mais en tant que Ressource. Tu as le même type d’inputStream donc pas de pbm pour le parsing.
je crois qu’on le récupère par le ClassLoader, ou par “Class” je n’ai rien sous la main pour l’instant, si tu veux je recherche ça.

edit: t’es pas fou de mettre ton email en clair! :o il faut au moins remplacer le @ par un at, parce que là, n’importe quel bot qui scanne le site peut remplir son catalogue d’adresse avec la tienne!!
Je crois que c’est un peu la galère de supprimer ton profil, peut-être que tu peux demander une modification, regarde dans le CDL, ou demande à un modo en MP

on ne peut pas modifier le contenu d’un .jar

pour recuperer le fichier en type inputstream , il faut faire :
InputStream is = getClass().getResourceAsStream("/" + nom_du_fichier);

oops, j’avais zappé la modification :smiley:
mais tu peux modifier un .jar avec les jarOutputStream ou les zipOutpuStream. le problème c’est qu’il est utilisé par le classloader, et je me demande ce que ça peut faire.

sinon, tu n’as pas d’autre solution que de sortir les xml du .jar ??

edit: en fait de modification, je crains bien que ce soit de la réécriture, mais tu ne dois pas avoir le choix, winzip fait peut-être aussi une nouvelle copie de fichier à chaque fois??

Non c’est rien ce mail c’est la boite à spam.
Sinon je vais essayer ça pour la lecture.
Merci

Je vais mette le XML que je modifie en dehors du JAR, ça pause trop de soucis sinon.
Par contre en lecture faut que je trouve comment accéder à mes fichiers XML.
Je suis obligé d’utilisé un flux de ce type : InputStream is = getClass().getResourceAsStream("/" + nom_du_fichier); ???

Tu peux utiliser un flux de fichier sans passer par la ressource. Avec FileInputStream, FileOutputStream, évidemment il fat réécrire tout le fichier.

Sinon, tu peux aussi mettre le répertoire de ton xml dans le classpath, et continuer d’y accéder comme ressource. edit: ah oui, mais toujours pas de modification, donc lecture/ecriture de fichier toute simple!