Класс пакета по адресу 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;
}
И получить другие, чем те, которые вы можете получить с помощью манифеста пакета поля-значения класса (например, ваша собственная дата сборки), вы получаете Main Attibutes и работаете с ними, запрашивая тот, который вы хотите. Этот следующий код является небольшим модом из аналогичного вопроса, который я нашел, вероятно, здесь, на SO. (Я хотел бы отдать должное, но я потерял его - извините.)
положил это в блок try-catch, передав в классHandle («this» или MyClass.class) методу. «ClassHandle» имеет тип класса:
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 –