Classloader

Classloader - Java - Programmation

Marsh Posté le 01-10-2003 à 18:19:22    

Pour charger un fichier properties sans me soucier de sa localisation, j'utilise parfois ceci :
 

Code :
  1. prop = new Properties();
  2. prop.load(ClassLoader.getSystemResourceAsStream(fileName));


 
où fileName vaut par exemple "machin.properties". Il suffit alors que ce fichier soit dans le classpath de l'appli et ça marche.
 
Problème :  
J'ai voulu faire la même chose avec une appli web sous tomcat et là je me heurte aux différents classloaders ou quelquechose de ce genre.
Visiblement il existe différents scopes, différents classpath car si je mets mon fichier properties tout bêtement dans WEB-INF/classes, le classloader ne le trouve pas.
 
Est-ce que ça dit quelquechose à quelqu'un ?
 
 
 
 
 
 

Reply

Marsh Posté le 01-10-2003 à 18:19:22   

Reply

Marsh Posté le 01-10-2003 à 18:35:25    

Code :
  1. prop.load(this.getClass().getResourceAsStream(fileName));


ca utilisera le classloader utilisé pour charger la classe pour charger le fileName.
 
De façon générale, c'est toujours cette méthode qu'il faut utiliser plutot que celle que tu as écrite.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 01-10-2003 à 19:09:59    

benou a écrit :

Code :
  1. prop.load(this.getClass().getResourceAsStream(fileName));


ca utilisera le classloader utilisé pour charger la classe pour charger le fileName.
 
De façon générale, c'est toujours cette méthode qu'il faut utiliser plutot que celle que tu as écrite.


 
Bravo, ça marche, merci !
 
En lisant la javadoc des deux méthodes, la différence n'est pas évidente à part que l'une est static et pas l'autre.
 
K.
 
 

Reply

Marsh Posté le 01-10-2003 à 19:31:25    

bha non c'est pas pareil : le getSystemResourceAsStream utilise le classloader system (le 1er) alors que ma méthode utilise le calssloader utilisé pour charger la classe ...
 
Dans un environement mono-classloader ca ne changera rien, mais c'est aps le cas de tomcat.
 
Et vraiment, faut avoir de sacrés bonnes raisons pour utiliser le getSystemRessourceAsStream :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 01-10-2003 à 20:02:13    

benou a écrit :


Et vraiment, faut avoir de sacrés bonnes raisons pour utiliser le getSystemRessourceAsStream :/


Je n'avais pas de bonnes raisons.
J'ai eu besoin de faire ça un jour et ça marchait jusqu'à ce que je veuille le faire dans une appli web...
 
J'le f'rais pu, promis  :D  
 
Encore merci.
 
K.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed