我有一个包含一个svnversion.properties
文件(只是看起来像svnversion=12345M
或其他)和下面的静态方法在class SVNVersion
库foo.jar
:的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
两次。很明显,我没有这样做。如何在包含给定类的jar文件的根目录中获取正确的svnversion.properties
文件? (假设它的存在)
编辑:我只是想
InputStream is = cl.getResourceAsStream("/svnversion.properties");
,它有同样的问题。我似乎只能访问主jar文件的/svnversion.properties
而不是库的/svnversion.properties
。
给不同的类名并不一定意味着不同的类加载器。我不认为这是可能的,这样做 – 2011-01-14 18:27:09
@Teja:我明白了。 :-)我对如何正确地做它感兴趣。 – 2011-01-14 18:28:47