Récuperation de valeurs de properties

cs_elie17 Messages postés 3 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 26 novembre 2009 - 26 nov. 2009 à 16:31
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 27 nov. 2009 à 09:53
Bonjour à tous,

je cherche à récupérer les valeurs de(s) fichier(s) properties d'une jar file.
Cette jar file contient des classes (perso) de bases, entre autre GUI, qui sont paramétrés par les properties.
Par convention ttes les properties portent le nom de leur class.
\resources\<nom de class>.properties.

Mtnt si j'écris une application dont la plupart des classes héritent des classes de la 'jar de base', mais sans specification, i.e. sans properties,
je souhaite que l'application prenne en comptes les valeurs des properties de bases - clair jusqu'ici? -


j'utilise la fonction suivante qui marche à tous les coups tant que les properties sont existantes.

public class PropertiesReader {

...

public static Properties getProperties (Object parObject) {
Properties properties = new Properties();
String strObjectName = SystemFunctions.getSimpleName(parObject);
String strResourcePath "resources/" + strObjectName + ".properties"; // resources/myClass.properties
try {
InputStream inputStream = parObject.getClass().getClassLoader().getResourceAsStream(strResourcePath);
properties.load(inputStream);
} catch(NullPointerException npe) {
properties = null;
} catch (IOException ioe) {
properties = null;
}
if(properties == null) {
properties = PropertiesReader.getSuperProperties(parObject);
}
return properties;
}


si ce n'est pas le cas (pas de properties) j'essaye de lire les properties des 'superclasses', comme suit

private static Properties getSuperProperties(Object parObject) {
Properties superProperties = new Properties();
String strObjectName = SystemFunctions.getSimpleName(parObject.getClass().getSuperclass());
String strResourcePath "resources/" + strObjectName + ".properties"; // resources/mySuperClass.properties
try {
InputStream inputStream = parObject.getClass().getSuperclass().getClassLoader().getResourceAsStream(strResourcePath);
superProperties.load(inputStream);
} catch(NullPointerException npe) {
properties = null;
} catch (IOException ioe) {
properties = null;
}
return properties;
}


ca ne marche ... jamais.
J'image que ca tient à la variable strResourcePath, mais la je seche...


Une idée?
Merci d'avance pour vos commentaires.

1 réponse

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
27 nov. 2009 à 09:53
Salut,

en debug, tu as vérifié la valeur de parObject.getClass().getSuperclass() ? Ton flux est null ? Tes fichiers sont dans différents jar ?

Pour charger une ressource, il vaut mieux utiliser
Thread.currentThread().getContextClassLoader().getResourceAsStream(path) ;
0
Rejoignez-nous