OVH Cloud OVH Cloud

Ouverture de fichiers dans un jar

13 réponses
Avatar
JFA
Je sais bien que pour les vétérans de Java ce doit être le genre de question
qui vous gonfle mais j'ai un problème et je ne m'en sort pas même en
regardant dans les tips de Sun et dans la FAQ de ce forum.

J'ai mes classes dans essai.jar qui contient également à la racine un
fichier maPage.html.
Que faire pour permettre à mon programme de l'ouvrir ?
J'utilise this.getAppletContext().showDocument( url );
Le problème est dans l'obtention de url.
Merci d'avance.

10 réponses

1 2
Avatar
Pimousse
Je sais bien que pour les vétérans de Java ce doit être le genre de question
qui vous gonfle mais j'ai un problème et je ne m'en sort pas même en
regardant dans les tips de Sun et dans la FAQ de ce forum.

J'ai mes classes dans essai.jar qui contient également à la racine un
fichier maPage.html.
Que faire pour permettre à mon programme de l'ouvrir ?
J'utilise this.getAppletContext().showDocument( url );
Le problème est dans l'obtention de url.
Merci d'avance.


bah il faut que ton url soit du type file://tonCheminVersMaPageHTML
je ne sais pas exactement la syntaxe, mais regarde du côté de getClass,
getClassLoader, getPath ... enfin des trucs du genre.
mais il est très possible que je t'oriente mal ...

Avatar
JFA
J'ai essayé d'utiliser : new URL(getCodeBase(), "maPage.html") qui me donne
un path du genre file://tonCheminVersMaPageHTML, mais ça ne marche que pour
les fichiers extérieurs au jar.
Or mon fichier est dans le jar (je suis têtu je sais).
Merci quand même.
JFA

bah il faut que ton url soit du type file://tonCheminVersMaPageHTML
je ne sais pas exactement la syntaxe, mais regarde du côté de getClass,
getClassLoader, getPath ... enfin des trucs du genre.
mais il est très possible que je t'oriente mal ...


Avatar
JFA
Merci pour ton conseil.
Dans mon applet j'ai fait :
ClassLoader cl = getClass().getClassLoader();
url = cl.getResource(fileName);
Ce qui me donne, en récupérant url.toString pour vérification :
jar:file:/C:/.../MonJar.jar!/Page.html
J'ai donc pu récupére l'URL de ma page.

Mais si je fais :
getAppletContext().showDocument(url, "_blank");
alors le browser me répond :
Impossible d'afficher la page

Il me manque maintenant le code correct pour ouvrir la page html contenue
dans le jar.


"Olivier FRESSE" a écrit dans le message news:
411a930b$0$29675$
Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();
Pour récupérer 1 ressource, on fait :
URL url_img = cl.getRessource("image.gif");


Avatar
Emmanuel Feller
Bon évidemment comme je sors d'une période délicate de six mois chez un
client sans
moyen de communication évolué ... (ni mail, ni news, ni téléphone, l'enfer
quoi) j'ai perdu
mes anciens réflexes et donc j'ai répondu directement au lieu de répondre au
groupe ...

Quoi qu'il en soit, tu as raison c'est impossible de donner une url de
fichier dans un jar à un browser.
D'ailleurs windows dézippe les fichiers quand on explore les archives zip et
fourni l'url du fichier dézippé.

Par contre, il est possible de dézipper dans l'applet le fichier souhaité et
après le fournir directement en source au browser en remplaçant le doc par
le contenu du fichier. Par contre, je ne sais pas comment ouvrir une
nouvelle fenetre, mais ca doit pas être sorcier.

Emmanuel
"Cédric Chabanois" a écrit dans le message de
news:411ba05f$0$7240$
Je ne pense pas que ce soit possible parce que
getAppletContext().showDocument ne fait que demander au browser de faire
une requête vers l'url indiquée. Or ton browser il ne comprend que les
requête de type http, ftp etc ...
Ton url jar:file:/C:/.../MonJar.jar!/Page.html est une url "java"

Par contre tu peux afficher la page html dans ton applet dans le
composant qui va bien mais ce n'est pas ce que tu veux faire ...

Donc en gros, ton html doit être sur le serveur, pas dans ton jar ...

Cédric

Merci pour ton conseil.
Dans mon applet j'ai fait :
ClassLoader cl = getClass().getClassLoader();
url = cl.getResource(fileName);
Ce qui me donne, en récupérant url.toString pour vérification :
jar:file:/C:/.../MonJar.jar!/Page.html
J'ai donc pu récupére l'URL de ma page.

Mais si je fais :
getAppletContext().showDocument(url, "_blank");
alors le browser me répond :
Impossible d'afficher la page

Il me manque maintenant le code correct pour ouvrir la page html
contenue


dans le jar.


"Olivier FRESSE" a écrit dans le message news:
411a930b$0$29675$

Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();
Pour récupérer 1 ressource, on fait :
URL url_img = cl.getRessource("image.gif");










Avatar
Cédric Chabanois
Je ne pense pas que ce soit possible parce que
getAppletContext().showDocument ne fait que demander au browser de faire
une requête vers l'url indiquée. Or ton browser il ne comprend que les
requête de type http, ftp etc ...
Ton url jar:file:/C:/.../MonJar.jar!/Page.html est une url "java"

Par contre tu peux afficher la page html dans ton applet dans le
composant qui va bien mais ce n'est pas ce que tu veux faire ...

Donc en gros, ton html doit être sur le serveur, pas dans ton jar ...

Cédric

Merci pour ton conseil.
Dans mon applet j'ai fait :
ClassLoader cl = getClass().getClassLoader();
url = cl.getResource(fileName);
Ce qui me donne, en récupérant url.toString pour vérification :
jar:file:/C:/.../MonJar.jar!/Page.html
J'ai donc pu récupére l'URL de ma page.

Mais si je fais :
getAppletContext().showDocument(url, "_blank");
alors le browser me répond :
Impossible d'afficher la page

Il me manque maintenant le code correct pour ouvrir la page html contenue
dans le jar.


"Olivier FRESSE" a écrit dans le message news:
411a930b$0$29675$

Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();
Pour récupérer 1 ressource, on fait :
URL url_img = cl.getRessource("image.gif");








Avatar
Emmanuel Feller
Non pas forcement, tu peux le dezipper dans une string et donner directement
le contenu de la string comme document au browser ... ;)

pas besoin de signer l'applet ;)
Emmanuel


"Cédric Chabanois" a écrit dans le message de
news:411bba40$0$7245$
Ouai çà veut dire enregistrer le fichier sur le disque dur et donner
l'url correspondante à getAppletContext().showDocument
Mais enregistrer sur le dur avec une applet, il y a des problèmes de
droits.


Cédric



Avatar
Cédric Chabanois
Ouai çà veut dire enregistrer le fichier sur le disque dur et donner
l'url correspondante à getAppletContext().showDocument
Mais enregistrer sur le dur avec une applet, il y a des problèmes de
droits.


Cédric


Bon évidemment comme je sors d'une période délicate de six mois chez un
client sans
moyen de communication évolué ... (ni mail, ni news, ni téléphone, l'enfer
quoi) j'ai perdu
mes anciens réflexes et donc j'ai répondu directement au lieu de répondre au
groupe ...

Quoi qu'il en soit, tu as raison c'est impossible de donner une url de
fichier dans un jar à un browser.
D'ailleurs windows dézippe les fichiers quand on explore les archives zip et
fourni l'url du fichier dézippé.

Par contre, il est possible de dézipper dans l'applet le fichier souhaité et
après le fournir directement en source au browser en remplaçant le doc par
le contenu du fichier. Par contre, je ne sais pas comment ouvrir une
nouvelle fenetre, mais ca doit pas être sorcier.

Emmanuel
"Cédric Chabanois" a écrit dans le message de
news:411ba05f$0$7240$

Je ne pense pas que ce soit possible parce que
getAppletContext().showDocument ne fait que demander au browser de faire
une requête vers l'url indiquée. Or ton browser il ne comprend que les
requête de type http, ftp etc ...
Ton url jar:file:/C:/.../MonJar.jar!/Page.html est une url "java"

Par contre tu peux afficher la page html dans ton applet dans le
composant qui va bien mais ce n'est pas ce que tu veux faire ...

Donc en gros, ton html doit être sur le serveur, pas dans ton jar ...

Cédric


Merci pour ton conseil.
Dans mon applet j'ai fait :
ClassLoader cl = getClass().getClassLoader();
url = cl.getResource(fileName);
Ce qui me donne, en récupérant url.toString pour vérification :
jar:file:/C:/.../MonJar.jar!/Page.html
J'ai donc pu récupére l'URL de ma page.

Mais si je fais :
getAppletContext().showDocument(url, "_blank");
alors le browser me répond :
Impossible d'afficher la page

Il me manque maintenant le code correct pour ouvrir la page html



contenue

dans le jar.


"Olivier FRESSE" a écrit dans le message news:
411a930b$0$29675$


Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();
Pour récupérer 1 ressource, on fait :
URL url_img = cl.getRessource("image.gif");














Avatar
Emmanuel Feller
"Olivier FRESSE" a écrit dans le message de
news:411bbfad$0$13681$
ok je comprends mieux ;-)
C'est clair que si l'applet doit extraire le fihier du jar
et le mettre sur le poste client, elle doit être signée !
Mais je ne comprends pas pourquoi le fichier HTML doit être
dans le jar ?
Pourquoi ne pas laisser ce fichier à coté du jar ?
Du coup plus de soucis avec le browser...


well ... pour zipper le fichier et éviter de le retelecharger à chaque fois,
si c'est un fichier utilisé souvent ... (fichier js par exemple)
Emmanuel

Avatar
Emmanuel Feller
J'ai oublié la meilleure raison tout à l'heure : n'avoir qu'un seul
téléchargement et être offline après ... ;)
de plus ca permet des choses sympa comme avoir une aplet servant des
fichiers à partir d'un cd multimédia sans connexion ni serveur web par
exemple ...
Emmanuel

ps: pour la démo, je fouillerai mes archives demain pour vous trouver ca ...
;)

"Cédric Chabanois" a écrit dans le message de
news:411bd954$0$7235$
C'est une bonne question en effet ...
Je ne vois pas l'intérêt non plus ...

Cédric

ok je comprends mieux ;-)
C'est clair que si l'applet doit extraire le fihier du jar
et le mettre sur le poste client, elle doit être signée !
Mais je ne comprends pas pourquoi le fichier HTML doit être
dans le jar ?
Pourquoi ne pas laisser ce fichier à coté du jar ?
Du coup plus de soucis avec le browser...

Cédric Chabanois wrote:


Ouai çà veut dire enregistrer le fichier sur le disque dur et donner
l'url correspondante à getAppletContext().showDocument
Mais enregistrer sur le dur avec une applet, il y a des problèmes de
droits.


Cédric



Bon évidemment comme je sors d'une période délicate de six mois chez un
client sans
moyen de communication évolué ... (ni mail, ni news, ni téléphone,
l'enfer quoi) j'ai perdu
mes anciens réflexes et donc j'ai répondu directement au lieu de
répondre




au groupe ...

Quoi qu'il en soit, tu as raison c'est impossible de donner une url de
fichier dans un jar à un browser.
D'ailleurs windows dézippe les fichiers quand on explore les archives
zip




et fourni l'url du fichier dézippé.

Par contre, il est possible de dézipper dans l'applet le fichier
souhaité




et après le fournir directement en source au browser en remplaçant le
doc




par le contenu du fichier. Par contre, je ne sais pas comment ouvrir
une




nouvelle fenetre, mais ca doit pas être sorcier.

Emmanuel
"Cédric Chabanois" a écrit dans le message de
news:411ba05f$0$7240$


Je ne pense pas que ce soit possible parce que
getAppletContext().showDocument ne fait que demander au browser de
faire





une requête vers l'url indiquée. Or ton browser il ne comprend que
les





requête de type http, ftp etc ...
Ton url jar:file:/C:/.../MonJar.jar!/Page.html est une url "java"

Par contre tu peux afficher la page html dans ton applet dans le
composant qui va bien mais ce n'est pas ce que tu veux faire ...

Donc en gros, ton html doit être sur le serveur, pas dans ton jar ...

Cédric



Merci pour ton conseil.
Dans mon applet j'ai fait :
ClassLoader cl = getClass().getClassLoader();
url = cl.getResource(fileName);
Ce qui me donne, en récupérant url.toString pour vérification :
jar:file:/C:/.../MonJar.jar!/Page.html
J'ai donc pu récupére l'URL de ma page.

Mais si je fais :
getAppletContext().showDocument(url, "_blank");
alors le browser me répond :
Impossible d'afficher la page

Il me manque maintenant le code correct pour ouvrir la page html



contenue


dans le jar.


"Olivier FRESSE" a écrit dans le message news:
411a930b$0$29675$



Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();
Pour récupérer 1 ressource, on fait :
URL url_img = cl.getRessource("image.gif");




















Avatar
Olivier FRESSE
Mettons que le fichier soit image.gif, à la racine du jar.
Dans la classe principale de l'app, mettons Main.java,
on récupére le classloader :
ClassLoader cl = Main.class.getClassLoader();

Pour récupérer 1 ressource, on fait :

URL url_img = cl.getRessource("image.gif");

et hop.

Pour moi ça marche, ds 1 appli webstart...

O.

JFA wrote:

Je sais bien que pour les vétérans de Java ce doit être le genre de
question qui vous gonfle mais j'ai un problème et je ne m'en sort pas même
en regardant dans les tips de Sun et dans la FAQ de ce forum.

J'ai mes classes dans essai.jar qui contient également à la racine un
fichier maPage.html.
Que faire pour permettre à mon programme de l'ouvrir ?
J'utilise this.getAppletContext().showDocument( url );
Le problème est dans l'obtention de url.
Merci d'avance.


1 2