以编程方式确定我的计算机上安装了哪些JDK/JRE

10

有没有一种标准的方法来做这个?我知道这可能与平台有关。目前我们的产品只支持Windows,所以现在我感兴趣的是这方面的信息。我能想到的唯一办法就是扫描注册表或遍历文件系统。扫描文件系统似乎需要很长时间,而注册表可能不可靠。我应该两者都做吗?还有其他建议吗?我试图寻找一个API,但没有找到。

3个回答

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

其他属性 这里


1
这只告诉执行代码的JRE版本 - 而不是安装了什么JDK / JRE。 - Jonik
抱歉,我误解了问题。您可以使用注册表,如果没有找到任何内容,则询问用户。关键是HKEY_LOCAL_MACHINE / SOFTWARE / JavaSoft / Java Development Kit。 - Denis Tulskiy

4
我首先会查找JAVA_HOME环境变量(可能还有JDK_HOME,尽管这种情况很少),然后确定其版本以及它是JDK还是JRE。
之后检查常见的位置。找出系统的程序文件目录(不要只假设它是C:\ Program Files,即使99.5%的时间都是如此),并在其中寻找常见的安装位置(例如Java)。
我不会进行详尽的搜索。
值得问一下:您真的需要以这种方式找到JDK吗?难道您不能询问用户希望使用哪个JDK,可能会建议您已经找到的任何简单的JDK?

Cletus,你能否为什么不进行穷举搜索辩护?直觉上我同意这一点,但我正在寻找强有力的理由。 - Amir Afghani
一次详尽的搜索需要在所有硬盘中搜索文件 java.exe 或 javac.exe(假设是 Windows),这可能需要很长时间。 - Chris Nava
建议您将搜索范围限制在C:\Program Files\和%PATH%环境变量以及上述两个变量中。 - Chris Nava

1

我可能会采用查找已安装Java的注册表键和爬行默认安装位置的组合方式(这不应该花费太长时间)。

另一种方法是捆绑一个小型Java应用程序,打印各种详细信息,如运行的JVM。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接