我有一個包含一個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