微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用“java -version:<value>”强制Java最低版本运行在Windows上不起作用

我想强制执行JVM的最低版本,我的应用程序应该运行到1.6或更高(即1.6+)。 我的理解是,你可以使用“-version:”命令行参数来做到这一点。 我试了一下,在Linux下似乎没有问题,但在Windows下却没有问题。

LINUX

我在Linux机器上安装了JDK 1.6.0_21版本。 $ JAVA_HOME和$ PATH环境variables已被设置为他们应该是。

我跑了以下几点:

如何在多个操作系统中手动告诉Python在脚本本身中使用哪个版本?

从java中确定linux版本

linux文件命令的输出中的版本号字段是什么?

我可以检查我安装的是哪个版本的OpenMP?

如何根据windows版本设置壁纸风格(填充,拉伸)

$ java -version:1.6+ -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b06) Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16,mixed mode) $ java -version:1.5+ -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b06) Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16,mixed mode) $ java -version:1.7+ -version Unable to locate JRE meeting specification "1.7+"

似乎都是预料之中的。 “version:1.6+”和“version:1.5+”应该可以工作,因为我安装了JDK 1.6.0_21,“version:1.7+”不应该是因为我没有安装JDK 1.7。

视窗

我在Windows机器上安装了相同的JDK 1.6.0_21(Windows 7更具体)。 %JAVA_HOME%和%PATH%环境variables已经被设置为他们应该是的。

我跑了以下几点:

$ java -version:1.6+ -version Unable to locate JRE meeting specification "1.6+" $ java -version:1.5+ -version Unable to locate JRE meeting specification "1.5+" $ java -version:1.7+ -version Unable to locate JRE meeting specification "1.7+"

每次执行都有错误

任何人都可以解释为什么相同的命令行参数在Linux上,但不是在Windows上工作? 这是一个function或错误

我能做些什么来解决/解决它? 尽可能多的我想在Linux和Windows上应用相同的命令行参数,所以我不必为Linux指定不同的“-version:”参数,而为Windows指定另一个不同的参数。

谢谢。

编译旧内核的程序

如何检测Windows Installer是否已安装?

如何在认的Python版本之间dynamic切换?

将GetVersionEx数字转换为操作系统名称

运行cmd.exe时避免显示Microsoft版本

任何人都可以解释为什么相同的命令行参数在Linux上,但不是在Windows上工作? 这是一个功能错误

我不认为这与Linux和Windows有关,而是与特定的发行版有关 – 我现在可以在Windows上用Oracle JDK运行,就是Sun JDK的继任者(通过PowerShell或CMD):

PS> java -version:1.7+ -version java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit server VM (build 24.45-b08,mixed mode)

相反,在OpenJDK的Ubuntu 12.04 LTS上,我却失败了:

$ java -version java version "1.7.0_51" OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2) OpenJDK 64-Bit server VM (build 24.45-b08,mixed mode) $ java -version:1.7+ -version Error: Unable to locate JRE meeting specification "1.7+"

一个简短的搜索揭示了以下一些不确定的问题:

java -version:release选项不能像文档(JDK-8011079)那样工作

引用的链接被打破,目前的是https://blogs.oracle.com/ksrini/entry/java_launcher_tricks_with_multiple ; 无论如何,我目前都看不到引用的文档如何解决这个问题。

java -version:1.6+拒绝工作(JDK-6558219)

这似乎暗示了分发的细节,确实有Java -version:spec对Ubuntu 12.04 LTS 不起作用(#1050911)

我已经证实,在Ubuntu 13.10和Amazon Linux 2013.09.2上,OpenJDK 6/7仍然会被打破,所以我建议尝试一个不同的OpenJDK发行版或JDK供应商,以防万一这个问题普遍存在 – 这绝对是一个奇怪的问题,尤指 因为OpenJDK是官方的Java SE 7参考实现 。

如何在Java中做?

String java = System.getProperty("java.specification.version"); double version = Double.valueOf(java); if (version < 1.6) { // Exit }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐