J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:\program files\etc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
merci d'avance
-- Vinz
Essaye ca
en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res)
{
URL url = this.getClass().getResource(res);
if (url == null)
{
throw new RuntimeException("Sorry - document not found:" + res);
}
String f = url.getFile();
return new File(f);
}
"Vinz" <vfuchs@hotmail.com> wrote in message
news:c82a8c$rib$1@s1.read.news.oleane.net...
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse
beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur
google
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
merci d'avance
-- Vinz
Jean Bernard Root
Vinz wrote:
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les dénominations entre URI, URL, File.
RFC 1738 (URL) RFC 2396 (URI)
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
Oula. Si votre fichier est dans le classpath, la bonne méthode est d'appeler votre ClassLoader et de lui demander un inputstream sur la ressource (et donc plus besoin de fichiers et tout le bazar) :
je pense que c'est ce genre de conseil que vous "avez lu quelque part". Cette API permet d'avoiles un flux sur une resource dont le chemin est spécifié de façon absolue et qui doit se trouver dans le class path de votre ClassLoader.
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Bah oui. C'est exactement le cas. Elle n'est pas absolue.
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette URL pour construire mon URI, j'ai la même erreur.
Pourriez-vous expliciter ce que vous cherchez à faire ? Passer par un URL pour construire un URI et ensuite un fichier ? Révisez vos javadocs sur les java.io.File ...
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup, parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
Je pense que vous vous trompez de direction ...
Vinz wrote:
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
RFC 1738 (URL)
RFC 2396 (URI)
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);
Oula. Si votre fichier est dans le classpath, la bonne méthode est
d'appeler votre ClassLoader et de lui demander un inputstream sur la
ressource (et donc plus besoin de fichiers et tout le bazar) :
je pense que c'est ce genre de conseil que vous "avez lu quelque part".
Cette API permet d'avoiles un flux sur une resource dont le chemin est
spécifié de façon absolue et qui doit se trouver dans le class path de
votre ClassLoader.
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Bah oui. C'est exactement le cas. Elle n'est pas absolue.
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Pourriez-vous expliciter ce que vous cherchez à faire ? Passer par un
URL pour construire un URI et ensuite un fichier ? Révisez vos javadocs
sur les java.io.File ...
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les dénominations entre URI, URL, File.
RFC 1738 (URL) RFC 2396 (URI)
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
Oula. Si votre fichier est dans le classpath, la bonne méthode est d'appeler votre ClassLoader et de lui demander un inputstream sur la ressource (et donc plus besoin de fichiers et tout le bazar) :
je pense que c'est ce genre de conseil que vous "avez lu quelque part". Cette API permet d'avoiles un flux sur une resource dont le chemin est spécifié de façon absolue et qui doit se trouver dans le class path de votre ClassLoader.
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Bah oui. C'est exactement le cas. Elle n'est pas absolue.
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette URL pour construire mon URI, j'ai la même erreur.
Pourriez-vous expliciter ce que vous cherchez à faire ? Passer par un URL pour construire un URI et ensuite un fichier ? Révisez vos javadocs sur les java.io.File ...
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup, parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
logger.error("fichier de conf des organismes introuvable");
et effectivement, le fichier n'existe pas, alors que quand je regarde avec le debugger ce qu'il y a dans URLfichierConf, il me trouve bien le fichier (/c:/Program%20Files/eclipse/workspace/projet/WEB-INF/classes/conf/monFichie r.xml").
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe pas. C'est quand même pas à cause de l'espace entre "program files", ou du sens du séparateur de répertoire ??
"Farid" a écrit dans le message de news:40a4c24f$0$31383$
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
logger.error("fichier de conf des organismes introuvable");
et effectivement, le fichier n'existe pas, alors que quand je regarde avec
le debugger ce qu'il y a dans URLfichierConf, il me trouve bien le fichier
(/c:/Program%20Files/eclipse/workspace/projet/WEB-INF/classes/conf/monFichie
r.xml").
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe
pas. C'est quand même pas à cause de l'espace entre "program files", ou du
sens du séparateur de répertoire ??
"Farid" <Farid@somewhere.com> a écrit dans le message de
news:40a4c24f$0$31383$626a14ce@news.free.fr...
Essaye ca
en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res)
{
URL url = this.getClass().getResource(res);
if (url == null)
{
throw new RuntimeException("Sorry - document not found:" + res);
}
String f = url.getFile();
return new File(f);
}
"Vinz" <vfuchs@hotmail.com> wrote in message
news:c82a8c$rib$1@s1.read.news.oleane.net...
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans
les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml .
Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand
je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe
cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse
beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur
google
logger.error("fichier de conf des organismes introuvable");
et effectivement, le fichier n'existe pas, alors que quand je regarde avec le debugger ce qu'il y a dans URLfichierConf, il me trouve bien le fichier (/c:/Program%20Files/eclipse/workspace/projet/WEB-INF/classes/conf/monFichie r.xml").
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe pas. C'est quand même pas à cause de l'espace entre "program files", ou du sens du séparateur de répertoire ??
"Farid" a écrit dans le message de news:40a4c24f$0$31383$
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
Si vous cherchez à vérifier l'existence de votre fichier, il suffit de laisser getClass().getResourceAsStream() envoyer une exception.
InputStream is = null; try { is = getClass().getResourceAsStream("/conf/monFichier.xml"); } catch (Exception e) { logger.error ("fichier de conf des organismes introuvable", e); }
/* là vous pouvez lire le contenu du fichier qui sera dans le stream */
Vinz
Le problème, c'est que l'objet que j'utilise prend un File en paramètre. Donc à moins de convertir un InputStream en File (ce qui ne doit pas être trop faisable), ça va me poser problème...
"Jean Bernard Root" a écrit dans le message de news:40a4d0c3$0$13000$
Si vous cherchez à vérifier l'existence de votre fichier, il suffit de laisser getClass().getResourceAsStream() envoyer une exception.
InputStream is = null; try { is = getClass().getResourceAsStream("/conf/monFichier.xml"); } catch (Exception e) { logger.error ("fichier de conf des organismes introuvable", e); }
/* là vous pouvez lire le contenu du fichier qui sera dans le stream */
Le problème, c'est que l'objet que j'utilise prend un File en paramètre.
Donc à moins de convertir un InputStream en File (ce qui ne doit pas être
trop faisable), ça va me poser problème...
"Jean Bernard Root" <biroute@boursorama.com> a écrit dans le message de
news:40a4d0c3$0$13000$626a14ce@news.free.fr...
Le problème, c'est que l'objet que j'utilise prend un File en paramètre. Donc à moins de convertir un InputStream en File (ce qui ne doit pas être trop faisable), ça va me poser problème...
"Jean Bernard Root" a écrit dans le message de news:40a4d0c3$0$13000$
Si vous cherchez à vérifier l'existence de votre fichier, il suffit de laisser getClass().getResourceAsStream() envoyer une exception.
InputStream is = null; try { is = getClass().getResourceAsStream("/conf/monFichier.xml"); } catch (Exception e) { logger.error ("fichier de conf des organismes introuvable", e); }
/* là vous pouvez lire le contenu du fichier qui sera dans le stream */
Vinz
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas vide).
"Jean Bernard Root" a écrit dans le message de news:40a4d0c3$0$13000$
Si vous cherchez à vérifier l'existence de votre fichier, il suffit de laisser getClass().getResourceAsStream() envoyer une exception.
InputStream is = null; try { is = getClass().getResourceAsStream("/conf/monFichier.xml"); } catch (Exception e) { logger.error ("fichier de conf des organismes introuvable", e); }
/* là vous pouvez lire le contenu du fichier qui sera dans le stream */
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne
comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas
vide).
"Jean Bernard Root" <biroute@boursorama.com> a écrit dans le message de
news:40a4d0c3$0$13000$626a14ce@news.free.fr...
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas vide).
"Jean Bernard Root" a écrit dans le message de news:40a4d0c3$0$13000$
Si vous cherchez à vérifier l'existence de votre fichier, il suffit de laisser getClass().getResourceAsStream() envoyer une exception.
InputStream is = null; try { is = getClass().getResourceAsStream("/conf/monFichier.xml"); } catch (Exception e) { logger.error ("fichier de conf des organismes introuvable", e); }
/* là vous pouvez lire le contenu du fichier qui sera dans le stream */
Jean Bernard Root
Vinz wrote:
Le problème, c'est que l'objet que j'utilise prend un File en paramètre. Donc à moins de convertir un InputStream en File (ce qui ne doit pas être trop faisable), ça va me poser problème...
Ah ... ça veut donc dire que l'objet en question est mal conçu et mérite un petit coup de "refactoring" comme on dit.
S'il prenait un InputStream au lieu d'un File, on pourrait l'utiliser avec plein d'autres sources de données (des sockets, etc ...) et vous pourriez l'utiliser sans vous arracher les cheveux.
Si votre seul problème est d'accèder à un fichier, oubliez "ce que vous avez lu quelquepart" et utilisez des instances de File ...
File f = new File ("config/monFichier.xml");
notez bien que l'accès au fichier va classiqument dépendre de l'endroit d'où vous lancez le programme, et qu'il vous sera bien plus profitable de passer par des chemins absolus (et donc de la configuration pour votre appli)
...
Vinz wrote:
Le problème, c'est que l'objet que j'utilise prend un File en paramètre.
Donc à moins de convertir un InputStream en File (ce qui ne doit pas être
trop faisable), ça va me poser problème...
Ah ... ça veut donc dire que l'objet en question est mal conçu et mérite
un petit coup de "refactoring" comme on dit.
S'il prenait un InputStream au lieu d'un File, on pourrait l'utiliser
avec plein d'autres sources de données (des sockets, etc ...) et vous
pourriez l'utiliser sans vous arracher les cheveux.
Si votre seul problème est d'accèder à un fichier, oubliez "ce que vous
avez lu quelquepart" et utilisez des instances de File ...
File f = new File ("config/monFichier.xml");
notez bien que l'accès au fichier va classiqument dépendre de l'endroit
d'où vous lancez le programme, et qu'il vous sera bien plus profitable
de passer par des chemins absolus (et donc de la configuration pour
votre appli)
Le problème, c'est que l'objet que j'utilise prend un File en paramètre. Donc à moins de convertir un InputStream en File (ce qui ne doit pas être trop faisable), ça va me poser problème...
Ah ... ça veut donc dire que l'objet en question est mal conçu et mérite un petit coup de "refactoring" comme on dit.
S'il prenait un InputStream au lieu d'un File, on pourrait l'utiliser avec plein d'autres sources de données (des sockets, etc ...) et vous pourriez l'utiliser sans vous arracher les cheveux.
Si votre seul problème est d'accèder à un fichier, oubliez "ce que vous avez lu quelquepart" et utilisez des instances de File ...
File f = new File ("config/monFichier.xml");
notez bien que l'accès au fichier va classiqument dépendre de l'endroit d'où vous lancez le programme, et qu'il vous sera bien plus profitable de passer par des chemins absolus (et donc de la configuration pour votre appli)
...
Jean Bernard Root
Vinz wrote:
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas vide).
Comment le lisez-vous ?
Vinz wrote:
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne
comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas
vide).
J'ai quand même essayé ce que tu préconises, et j'ai un problème : is ne comprend que des "0", et aucune erreur n'est levée (et mon fichier n'est pas vide).
hum. bizzare que ca ne marche pas. c'est ce que j'utilises dans tous mes test unitaire pour charger des fichiers utilises dans ces test. mais c'est vrai que je n'ai pas d'espace dans le chemin, qui est un problem CLASSIQUE avec java...
2 solutions: la premiere passe comme dans mon code par String f = url.getFile(); et replace tous les sequence %20 par des veritable espace.
la deuxieme solution comme te l'indique Jean Bernard, passe par un getResourceAsStream()
Puisque de toute facon tu veut travailler avec un xml existant, normalement les outils te permettant de faire du xml, devrait aussi donner access au fichier xml via des inputstream. voici un bout de code que j'utilise pour recuperer un access (en lecture) sur un fichier contenu dans mon jar.
ClassLoader cl = MaClass.class.getClassLoader(); InputStream is = cl.getResourceAsStream("conf/monFichier.xml");
En esperant que sa aidera.
PS; entre nous, il est toujours recommende de ne pas installer des programmes java genre IDE et server dans des repertoires avec des espace. ca pose TOUJOURS plein de problem !
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe pas. C'est quand même pas à cause de l'espace entre "program files", ou du sens du séparateur de répertoire ??
"Farid" a écrit dans le message de news:40a4c24f$0$31383$
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand
je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google
merci d'avance
-- Vinz
hum. bizzare que ca ne marche pas.
c'est ce que j'utilises dans tous mes test unitaire pour charger des
fichiers utilises dans ces test.
mais c'est vrai que je n'ai pas d'espace dans le chemin, qui est un problem
CLASSIQUE avec java...
2 solutions:
la premiere passe comme dans mon code par
String f = url.getFile();
et replace tous les sequence %20 par des veritable espace.
la deuxieme solution comme te l'indique Jean Bernard,
passe par un getResourceAsStream()
Puisque de toute facon tu veut travailler avec un xml existant, normalement
les outils te permettant de faire du xml, devrait aussi donner access au
fichier xml via des inputstream.
voici un bout de code que j'utilise pour recuperer un access (en lecture)
sur un fichier contenu dans mon jar.
ClassLoader cl = MaClass.class.getClassLoader();
InputStream is = cl.getResourceAsStream("conf/monFichier.xml");
En esperant que sa aidera.
PS; entre nous, il est toujours recommende de ne pas installer des
programmes java genre IDE et server dans des repertoires avec des espace. ca
pose TOUJOURS plein de problem !
Farid.
"Vinz" <vfuchs@hotmail.com> wrote in message
news:c82ig4$u0$1@s1.read.news.oleane.net...
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe
pas. C'est quand même pas à cause de l'espace entre "program files", ou du
sens du séparateur de répertoire ??
"Farid" <Farid@somewhere.com> a écrit dans le message de
news:40a4c24f$0$31383$626a14ce@news.free.fr...
Essaye ca
en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res)
{
URL url = this.getClass().getResource(res);
if (url == null)
{
throw new RuntimeException("Sorry - document not found:" + res);
}
String f = url.getFile();
return new File(f);
}
"Vinz" <vfuchs@hotmail.com> wrote in message
news:c82a8c$rib$1@s1.read.news.oleane.net...
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans
les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier
que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml .
Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je
ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml");
File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car
quand
je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe
cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse
beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur
google
hum. bizzare que ca ne marche pas. c'est ce que j'utilises dans tous mes test unitaire pour charger des fichiers utilises dans ces test. mais c'est vrai que je n'ai pas d'espace dans le chemin, qui est un problem CLASSIQUE avec java...
2 solutions: la premiere passe comme dans mon code par String f = url.getFile(); et replace tous les sequence %20 par des veritable espace.
la deuxieme solution comme te l'indique Jean Bernard, passe par un getResourceAsStream()
Puisque de toute facon tu veut travailler avec un xml existant, normalement les outils te permettant de faire du xml, devrait aussi donner access au fichier xml via des inputstream. voici un bout de code que j'utilise pour recuperer un access (en lecture) sur un fichier contenu dans mon jar.
ClassLoader cl = MaClass.class.getClassLoader(); InputStream is = cl.getResourceAsStream("conf/monFichier.xml");
En esperant que sa aidera.
PS; entre nous, il est toujours recommende de ne pas installer des programmes java genre IDE et server dans des repertoires avec des espace. ca pose TOUJOURS plein de problem !
et pourtant, quand je crée un fichier à partir de ça, le fichier n'existe pas. C'est quand même pas à cause de l'espace entre "program files", ou du sens du séparateur de répertoire ??
"Farid" a écrit dans le message de news:40a4c24f$0$31383$
Essaye ca en passant la string "/conf/monFichier.xml"
public File getSrcFile(String res) {
URL url = this.getClass().getResource(res); if (url == null) { throw new RuntimeException("Sorry - document not found:" + res); } String f = url.getFile();
return new File(f); }
"Vinz" wrote in message news:c82a8c$rib$
salut à tous,
J'ai besoin d'un petit coup de main parce que je m'y perds un peu dans les
dénominations entre URI, URL, File.
Je dois utiliser un objet qui prend en paramètre un File. Ce fichier que
j'utilise se trouve dans le répertoire classes/conf/monFichier.xml . Tout
ceci se retrouve ensuite dans un .war
j'ai lu quelque part que c'était mieux de passer par des URI (dont je ne
suis pas sûr d'avoir bien compris l'intérêt). voilà ce que je fais :
URI fichierConfURI=new URI("/conf/classes/monFichier.xml"); File fichierConfig= new File(fichierConfURI);
J'ai une exception qui est levée, qui me dit "URI is not absolute" .
Et quand j'essaye de passer par un URL (qui elle est absolue, car quand
je
débugue, je vois qu'elle vaut c:program filesetc), et que je passe cette
URL pour construire mon URI, j'ai la même erreur.
Si quelqu'un a un début de solution sur ce problème ça m'intéresse beaucoup,
parce que je n'ai rien trouvé sur l'erreur "URI is not absolute" sur google