【问题标题】:how to check jre version using java application如何使用 java 应用程序检查 jre 版本
【发布时间】:2012-05-23 17:02:19
【问题描述】:

我在JDK7中做了一个应用程序,但jre6仍在市场上使用,如果我将我的jar文件发送给使用jre6的人,它不会工作,有没有办法让应用程序检查jre版本,如果它不兼容然后要求用户更新..

【问题讨论】:

  • 这里是link如何比较JRE版本。
  • @Crazenezz:有没有办法通过dos检查,通过创建一个Windows批处理文件和虚拟基础,可以做到吗?如果匹配,那么它将执行 jar?我所说的实际上可以做到这一点吗??
  • 有可能批量进行。您可以转换我上面给出的链接中的算法,并使用批处理编程风格进行翻译(如果您觉得使用起来很舒服)。

标签: compatibility java


【解决方案1】:

您可以使用System.getProperty(String key); 方法以"java.version" 作为键。

String version = System.getProperty("java.version");

示例输出:

1.6.0_30

可以在here找到可用的密钥。

【讨论】:

  • 如果 jre 不匹配会起作用...因为在我的情况下,如果我使用 jre6,jre 文件只会显示启动屏幕并自行关闭。我需要一些万无一失的解决方案!!
  • 它没有显示任何异常...程序无法运行...我出现了异常错误对话框.....但没有任何效果..
【解决方案2】:
System.getProperty("java.version")

注意:它将返回当前 jvm 的版本,执行此代码的 jvm,如果您的计算机上安装了 java6 和 java7,并且您在 java 7 上运行此代码,它将显示给您第 7 版

【讨论】:

  • 如果 jre 不匹配会起作用...因为在我的情况下,如果我使用 jre6,jre 文件只会给出启动画面并自行关闭。我需要一些万无一失的解决方案!
  • 它没有给出任何异常......它只是没有运行......我已经做了一个错误对话框以防出现任何异常......所以我没有显示任何东西......跨度>
【解决方案3】:
static public void main(String[] arg) throws IOException
    {
        PrintStream out = System.out;
        Properties pro = System.getProperties();
        Set set = pro.entrySet();

       Iterator<Map.Entry<String , String >> itr = set.iterator();
        while(itr.hasNext())
        {
            Map.Entry ent = itr.next();
            out.println(ent.getKey() + " -> " + ent.getValue() + "\n");
        }
}

使用System.getProperty("java.version") 或System.getProperty("java.runtime.version") 获取已安装的java版本。
上面截取的代码可以帮助您了解更多详细信息,例如 java 供应商名称、操作系统等。

【讨论】:

    【解决方案4】:

    这是一个example,它检查版本并在版本不正确时使用System.getProperty("java.version"); 引发异常

    【讨论】:

    • 如果 jre 不匹配会起作用...因为在我的情况下,如果我使用 jre6,jre 文件只会显示启动画面并自行关闭。我需要一些万无一失的解决方案!!
    • 我无法在 atm 验证它,但如果你把它放在一个在加载任何 jre7 特定类之前加载的类中,它应该可以工作
    【解决方案5】:

    使用 Java Web Start,如果 Java 版本与您的 jar 不兼容,您会看到一个消息框。例如:

    <resources>
           <j2se version="1.4+"
                 href="http://java.sun.com/products/autodl/j2se" />
    

    在 jnlp 文件中

    【讨论】:

      【解决方案6】:

      如果您尝试在较旧版本的 jre 上运行 Java 文件,则会发生 UnsupportedClassVersionError。

      java.lang.UnsupportedClassVersionError:.class 文件中的版本号错误 [在 java.lang.ClassLoader.defineClass1(本机方法)] 关于运行一个编译好的 java 类文件。

      本质上,您不能运行使用比 JVM 更新的版本编译的 .class 文件。

      【讨论】:

        猜你喜欢
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 2010-09-18
        • 2021-08-19
        相关资源
        最近更新 更多