J'ai une bibliothèque foo.jar
qui contient un fichier svnversion.properties
(regarde comme svnversion=12345M
ou autre) et la méthode statique suivante dans un class SVNVersion
:java: obtenir la bonne ressource
public static SVNVersion fromString(String s) { ... }
public static SVNVersion fromResources(Class<?> cl) {
ResourceBundle svnversionResource = ResourceBundle.getBundle(
"svnversion", Locale.getDefault(), cl.getClassLoader());
if (svnversionResource.containsKey("svnversion"))
{
String svnv = svnversionResource.getString("svnversion");
return fromString(svnv);
}
else
{
return null;
}
}
J'ai aussi une bibliothèque bar.jar
que contient également un fichier svnversion.properties
(disons qu'il contient svnversion=789
).
Cependant, quand je lance ce qui suit dans un class SomeClassInBarJar
qui est dans bar.jar
:
SVNVersion vfoo = SVNVersion.fromResources(SVNVersion.class);
SVNVersion vbar = SVNVersion.fromResources(SomeClassInBarJar.class);
et imprimer le résultat, je vois 789
deux fois. De toute évidence, je ne le fais pas correctement. Comment puis-je obtenir le bon fichier svnversion.properties
dans la racine du fichier jar contenant une classe donnée? (En supposant qu'il est là)
edit: Je viens d'essayer
InputStream is = cl.getResourceAsStream("/svnversion.properties");
et il a le même problème. Il semble que je ne puisse accéder qu'au fichier /svnversion.properties
du fichier jar principal et non au /svnversion.properties
de la bibliothèque.
Donner un nom de classe différent ne signifie pas nécessairement des chargeurs de classe différents. Je ne pense pas que ce soit possible de faire comme ça –
@Teja: Je l'ai compris. :-) Je suis intéressé par la façon de le faire correctement. –
Pouvez-vous expliquer comment faire celui-ci? –