我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复.我使用以下条件:
if (System.getProperty("java.version").startsWith("1.5.")) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
这适用于其他JVM吗?有没有更好的方法来检查这个?
可能重复:
如何从Java代码中了解JDK版本
在我的java代码中,我想检查jdk版本.如果它是1.5或以上而且只是我想继续执行.如何获得jdk版本?
$java -version
Run Code Online (Sandbox Code Playgroud)
打印如下
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我感兴趣的信息是完整的java版本,System.getProperties()似乎没有这些信息.它只有之前的版本_,而不是更新40我的情况下的信息.
编辑:当我运行测试代码System.out.println(System.getProperty("java.version");打印完整版本.但我正在开发一个大型代码库,在这个代码库中我无法获得相同的结果.我检查了代码库,如果属性在某种程度上被覆盖,但找不到任何东西.
EDIT_2:java.version当我手动编译代码javac然后java在终端上运行它时,我发现打印1.8.0_40 .但是当我通过IntelliJ运行它时,它只打印1.8.0.
我读过这篇文章,但还不够好!
我的意思是:当我跑步时
java版本
我得到:
java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480sr3fp20-20161019_02(SR3 FP20))
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20161013_322271 (JIT enabled, AOT enabled)
J9VM - R28_Java8_SR3_20161013_1635_B322271
JIT - tr.r14.java.green_20161011_125790
GC - R28_Java8_SR3_20161013_1635_B322271_CMPRSS
Run Code Online (Sandbox Code Playgroud)
...
但是,当我使用任何编程方式“从内部”访问 JVM 版本时(如我链接到的问题所述),我只能看到诸如以下的值:
Property: java.vm.specification.version : 1.8
Property: java.vm.specification.vendor : Oracle Corporation
Property: java.vm.specification.name : Java Virtual Machine Specification
Property: java.vm.version : 2.8
Property: java.vm.vendor : IBM Corporation
Property: java.vm.name : IBM J9 VM
Property: java.specification.version …Run Code Online (Sandbox Code Playgroud) 我想创建一个可执行 Jar 文件,该文件在运行时检查该计算机上当前安装的 Java 版本并将其显示给用户。我在网上搜索过,但没有找到任何允许 Jar 文件检查的代码。我知道Java网站有它(http://www.java.com/en/download/installed.jsp)我找不到在Java代码中复制它的方法。任何帮助将非常感激。
注意:很抱歉,如果这个问题真的很愚蠢并且答案很简单......我只是花了半个小时试图找到解决方案,但我找不到解决方案,所以我需要你的帮助!谢谢
编辑:我不需要显示它的代码,只需获取版本就足够了,谢谢!