有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编译日期和时间

有没有与C&;C++编译时常数,γ-DATEYZ和γ-TimeType。我需要打印正在编译的程序的编译时间和版本信息

谢谢

科戴夫19


共 (1) 个答案

  1. # 1 楼答案

    据我所知,没有这样的事。 但是在运行的JVM上,您可以使用下面的代码直接从jar中获得一些信息(这里,信息来自编译时放入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;
    }
    

    输出将使用如下内容(此处为commons-lang-2.4.jar中提供的StringUtils.class,编译于2008年3月15日20:43):

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