У меня есть библиотека foo.jar
, которая содержит svnversion.properties
файла (выглядит как svnversion=12345M
или любые другой), и следующий статический метод class SVNVersion
:Java: получение права ресурса
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;
}
}
У меня также есть библиотека bar.jar
что содержит файл svnversion.properties
(скажем, он содержит svnversion=789
).
Однако, когда я запускаю следующее в class SomeClassInBarJar
, которая находится в bar.jar
:
SVNVersion vfoo = SVNVersion.fromResources(SVNVersion.class);
SVNVersion vbar = SVNVersion.fromResources(SomeClassInBarJar.class);
и напечатать результат, я вижу 789
дважды. Ясно, что я не делаю этого правильно. Как получить правильный файл svnversion.properties
в корневом файле jar, содержащем данный класс? (Предполагается, что это там)
редактировать: Я просто попытался
InputStream is = cl.getResourceAsStream("/svnversion.properties");
и имеет ту же проблему. Кажется, я могу получить доступ к главному файлу jar файла /svnversion.properties
, а не к библиотеке /svnversion.properties
.
Предоставление различного имени класса необязательно означает разные загрузчики классов. Я не думаю, что это возможно сделать так: –
@Teja: Я понял это. :-) Мне интересно, как это сделать правильно. –
Можете ли вы объяснить, как это сделать? –