Lớp gói tại java.lang.Package có các phương pháp để thực hiện những gì bạn muốn. Dưới đây là một cách dễ dàng để có được nội dung biểu hiện sử dụng mã java của bạn:
String t = this.getClass().getPackage().getImplementationTitle();
String v = this.getClass().getPackage().getImplementationVersion();
tôi đặt này thành một phương pháp tĩnh trong một phương pháp hữu ích class.The chia sẻ chấp nhận một đối tượng lớp xử lý như một tham số. Bằng cách này, bất kỳ lớp nào trong hệ thống của chúng tôi đều có thể nhận được thông tin biểu hiện của riêng họ khi họ cần. Rõ ràng là phương pháp có thể dễ dàng sửa đổi để trả lại một mảng hoặc hashmap của các giá trị.
gọi phương pháp:
String ver = GeneralUtils.checkImplVersion(this);
phương pháp trong một tập tin gọi là GeneralUtils.java:
public static String checkImplVersion(Object classHandle)
{
String v = classHandle.getClass().getPackage().getImplementationVersion();
return v;
}
Và để có được biểu hiện các lĩnh vực-giá trị khác hơn là những người bạn có thể nhận được thông qua gói class (ví dụ Build-Date của riêng bạn), bạn có được Attibutes chính và làm việc thông qua những người đó, yêu cầu một người cụ thể mà bạn muốn. Mã sau đây là một mod nhỏ từ một câu hỏi tương tự tôi tìm thấy, có lẽ ở đây trên SO. (Tôi muốn ghi nhận nó nhưng tôi đã mất nó - xin lỗi.)
đặt điều này trong một khối try-catch, chuyển trong một classHandle ("this" hoặc MyClass.class) vào phương thức. "ClassHandle" là loại 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;
có thể trùng lặp của http://stackoverflow.com/questions/2198525/can-values-defined-in-manifest-mf-be-accessed-programmatically/2198542 –