包類在 java.lang.Package有方法來做你想做的。這裏有一個簡單的方法使用Java代碼來獲得清單內容:
String t = this.getClass().getPackage().getImplementationTitle();
String v = this.getClass().getPackage().getImplementationVersion();
我把這個變成一個共享的實用class.The方法的靜態方法接受一個手柄類對象作爲參數。這樣,我們系統中的任何類都可以在需要時獲取自己的清單信息。顯然,該方法可以很容易地修改,以返回值的數組或哈希表。
調用方法:
String ver = GeneralUtils.checkImplVersion(this);
在一個名爲 GeneralUtils.java文件的方法:
public static String checkImplVersion(Object classHandle)
{
String v = classHandle.getClass().getPackage().getImplementationVersion();
return v;
}
而獲得比那些你可以通過包裝獲得其他領域的表現值(例如你自己的建造日期),你得到主要屬性並且通過那些工作,尋求你想要的特定的一個。下面的代碼是我發現的類似問題中的一個輕微的mod,可能是在這裏。 (我想貸,但我失去了它 - 對不起)
把這個在一個try-catch塊,傳遞一個classHandle(以下簡稱「本」或MyClass.class)的方法。 「classHandle」 是一個Class類型:
String buildDateToReturn = null;
try
{
String path = classHandle.getProtectionDomain().getCodeSource().getLocation().getPath();
JarFile jar = new JarFile(path); // or can give a File handle
Manifest mf = jar.getManifest();
final Attributes mattr = mf.getMainAttributes();
LOGGER.trace(" --- getBuildDate: "
+"\n\t path: "+ path
+"\n\t jar: "+ jar.getName()
+"\n\t manifest: "+ mf.getClass().getSimpleName()
);
for (Object key : mattr.keySet())
{
String val = mattr.getValue((Name)key);
if (key != null && (key.toString()).contains("Build-Date"))
{
buildDateToReturn = val;
}
}
}
catch (IOException e)
{ ... }
return buildDateToReturn;
的可能的複製http://stackoverflow.com/questions/2198525/can-values-defined-in-manifest-mf-be-accessed-programmatically/2198542 –