Насколько я знаю, ничего подобного нет.
Но на работающей JVM вы можете получить немного информации прямо из jar-файла, используя что-то вроде приведенного ниже кода (здесь информация поступает из файла Manifest, помещенного в jar во время компиляции (какой бы ни была ваша система сборки, Ant или Maven) или что-то еще.) Не стесняйтесь адаптировать его (другой вывод и т. д.).
public String getVersionfinal Class classe) {
String version = null;
String shortClassName = classe.getName().substring(classe.getName().lastIndexOf(".") + 1);
try {
ClassLoader cl = this.getClass().getClassLoader();
String threadContexteClass = classe.getName().replace('.', '/');
URL url = cl.getResource(threadContexteClass + ".class");
if ( url == null ) {
version = shortClassName + " $ (no manifest)";
} else {
String path = url.getPath();
String jarExt = ".jar";
int index = path.indexOf(jarExt);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
if (index != -1) {
String jarPath = path.substring(0, index + jarExt.length());
File file = new File(jarPath);
String jarVersion = file.getName();
JarFile jarFile = new JarFile(new File(new URI(jarPath)));
JarEntry entry = jarFile.getJarEntry("META-INF/MANIFEST.MF");
version = shortClassName + " $ " + jarVersion.substring(0, jarVersion.length()
- jarExt.length()) + " $ "
+ sdf.format(new Date(entry.getTime()));
CloseHelper.close(jarFile);
} else {
File file = new File(path);
version = shortClassName + " $ " + sdf.format(new Date(file.lastModified()));
}
}
} catch (Exception e) {
version = shortClassName + " $ " + e.toString();
}
return version;
}
будет выводить когда-то что-то вроде этого (здесь для класса StringUtils.class, доступного в commons-lang-2.4.jar, скомпилированного 15 марта 2008 20:43):
StringUtils $ commons-lang-2.4 $ 15/03/2008 20: 43: 16