当前位置: 首页 > 知识库问答 >
问题:

如何从程序中找到JVM版本...甚至更多的细节?

宓季同
2023-03-14

我读过这个,但还不够好!

我的意思是:当我跑的时候

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
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      : 1.8
Property: java.specification.vendor       : Oracle Corporation
Property: java.specification.name         : Java Platform API Specification
MX bean --- vmversion: 2.8
J9VM - R28_Java8_SR1_20150410_1531_B243669 

但是:当我打印这些系统属性时,这样的细节就丢失了!我还没有找到一种编写java代码的方法,可以将稍旧的JVM与较新的JVM区分开来。

长话短说:有没有什么编程方法可以“在我的JVM中”做一些事情,从而给我提供那种级别的细节?

(基本上,我需要它来动态禁用我们的一些JUnit测试;它们不能与旧的JVM一起工作;但是我希望在本地eclipse安装中使用新的JVM运行时执行它们)

共有1个答案

寇鸿
2023-03-14

我没有IBM Java,只有Oracle Java。当我执行java-version时,我得到:

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

我可以用以下代码复制准确输出:

System.out.printf("java version \"%s\"%n" +
                  "%s (build %s)%n" +
                  "%s (build %s, %s)%n",
                  System.getProperty("java.version"),
                  System.getProperty("java.runtime.name"),
                  System.getProperty("java.runtime.version"),
                  System.getProperty("java.vm.name"),
                  System.getProperty("java.vm.version"),
                  System.getProperty("java.vm.info"));

IBM Java可能会添加其他信息。为什么不尝试转储所有系统属性并亲自查看:

new TreeMap<>(System.getProperties()).entrySet().forEach(e ->
        System.out.printf("%s = %s%n", e.getKey(), e.getValue())
);
 类似资料:
  • 当我运行flutter create x或flutter doctor时,我会得到以下消息“无法找到任何匹配版本的JVMs”。 如何在Mac OS X 10.9上设置JAVA_HOME环境变量?

  • 利用 Creative Cloud 桌面应用程序,可以快速将您的所有应用程序更新至最新版本。您可以单独更新已安装的应用程序,也可以同时更新所有应用程序。 更新 Creative Cloud 应用程序 注意:默认情况下,Creative Cloud 应用程序的所有早期版本会在您更新至最新版本时被卸载。如果要保留以前安装的版本,请记住在开始更新过程之前更改默认设置。关更多信息,请参阅高级选项。 如何检

  • 利用 Creative Cloud 桌面应用程序,可以快速将您的所有应用程序更新至最新版本。您可以单独更新已安装的应用程序,也可以同时更新所有应用程序。 更新 Creative Cloud 应用程序 注意:默认情况下,Creative Cloud 应用程序的所有早期版本会在您更新至最新版本时被卸载。如果要保留以前安装的版本,请记住在开始更新过程之前更改默认设置。关更多信息,请参阅高级选项。 如何检

  • 几天前,我在play store上发布了Flatter android应用程序,现在我想在play store中更新该应用程序,因此对代码进行了更改,但现在我很困惑,我是否必须使用与第一次发布应用程序时相同的过程来生成新密钥(生成密钥,然后运行Flatter build应用程序包),还是必须遵循其他程序。请帮忙,万分感谢。

  • 问题内容: 我知道我可以找到我正在运行的Swift版本,还原到Terminal并输入: 另外,我一直在阅读有关Swift中的预处理器宏的信息,但是找不到Swift版本常量很幸运。 随着Swift 1.2的到来,最好标记仅在Swift 1.1上运行的旧代码(Xcode最高为6.2)或需要Xcode 6.3的新代码(Swift 1.2)。 注意:我也可以使用system()做类似的事情: 然后打开so

  • 下面是网站地图。php,并且它被认为是一个XML网站地图(为了SEO)。它背后的原理是:它拉取并将其正确格式化为XML站点地图链接。 它似乎运行良好,请现场查看:http://loaistudio.com/sitemap然而,我并不确定它是否被识别为XML文件——所以我对它进行了测试,但测试失败了——没有找到站点地图。。。看看这里:http://seositecheckup.com/test_ch