以编程方式确定我的盒子上安装了哪些JDK / JRE

有没有一个标准的方法来做到这一点? 我意识到这可能有点依赖于平台。 我们的产品现在只支持Windows,所以我想这就是我现在感兴趣的。 我能想到的唯一的事情是扫描registry或抓取文件系统。 扫描文件系统似乎需要很长时间 – registry可能不可靠。 我应该这样做吗? 还有其他build议吗? 我试图寻找一个API来做到这一点,没有运气。

首先,我将首先查找JAVA_HOME环境变量(可能还有JDK_HOME,尽管这种情况不太常见),然后确定是哪个版本,以及它是JDK还是JRE。

之后,检查常见的地点。 找出系统的程序文件目录(不要只是假设它是C:\ Program Files,即使它是99.5%的时间),并寻找在该(如Java)下的公共安装位置。

我不会做一个详尽的搜索。

值得一提的是:你真的需要用这种方式来找到JDK吗? 你不能只是问用户他或她想使用什么JDK,可能建议你已经找到的任何简单的东西?

System.out.println(System.getProperty("java.version")); 

其他属性在这里

我可能会去寻找Java安装的注册表键和爬行安装的默认位置(这不应该花太长的时间)的组合。

另一种方法是捆绑一个小型的Java应用程序,它打印各种细节,如正在运行的JVM。