gpt4 book ai didi

java - 编译日期和时间

转载 作者:搜寻专家 更新时间:2023-11-01 01:24:17 24 4
gpt4 key购买 nike

是否有与 C 和 C++ 编译时常量 __DATE__ 和 __TIME__ 等效的 Java。我需要打印正在编译的程序的编译时间和版本信息。

谢谢

kodev19

最佳答案

据我所知,没有类似的东西。但是在运行的 JVM 上,您可以使用类似下面的代码直接从 jar 中获取一些信息(这里,信息来自编译时放入 jar 中的 Manifest 文件(无论您的构建系统是 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;
}

一旦使用就会输出类似的东西(这里是 2008 年 3 月 15 日 20:43 编译的 commons-lang-2.4.jar 中可用的 StringUtils.class):

StringUtils $ commons-lang-2.4 $ 15/03/2008 20:43:16

关于java - 编译日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com