Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式确定什么是JDK/JRE';我的盒子上安装了_Java_Windows_Installation - Fatal编程技术网

Java 以编程方式确定什么是JDK/JRE';我的盒子上安装了

Java 以编程方式确定什么是JDK/JRE';我的盒子上安装了,java,windows,installation,Java,Windows,Installation,有没有标准的方法可以做到这一点?我意识到这可能有点依赖于平台。我们的产品现在只在Windows上受支持,所以我想这就是我现在感兴趣的。我唯一能想到的就是扫描注册表或对文件系统进行爬网。扫描文件系统似乎需要很长时间,而且注册表可能不可靠。我应该两者都做吗?还有其他建议吗?我试图寻找一个API来完成这项工作,但运气不好。我可能会结合查找Java安装的注册表项和对默认位置进行爬网以进行安装(这不会花费太长时间) 另一种方法是捆绑一个小型Java应用程序,它可以打印各种细节,比如运行的JVM。我首先要查

有没有标准的方法可以做到这一点?我意识到这可能有点依赖于平台。我们的产品现在只在Windows上受支持,所以我想这就是我现在感兴趣的。我唯一能想到的就是扫描注册表或对文件系统进行爬网。扫描文件系统似乎需要很长时间,而且注册表可能不可靠。我应该两者都做吗?还有其他建议吗?我试图寻找一个API来完成这项工作,但运气不好。

我可能会结合查找Java安装的注册表项和对默认位置进行爬网以进行安装(这不会花费太长时间)


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

我首先要查找Java_HOME环境变量(可能还有JDK_HOME,尽管它不太常见),然后确定它是什么版本,以及它是JDK还是JRE

然后检查公共位置。找出系统的ProgramFiles目录(不要只假设它是C:\ProgramFiles,即使它占99.5%的时间),并在该目录下查找常见的安装位置(例如Java)

我不会彻底搜查

值得一问的是:您真的需要这样找到JDK吗?难道你不能问问用户他或她希望使用什么JDK,可能建议你已经找到的任何简单的JDK吗

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

其他属性

只告诉执行代码的JRE版本,而不是安装了什么JDK/JRE对不起,我误解了这个问题。您可以使用注册表,如果未找到任何内容,请询问用户。关键是HKEY_LOCAL_MASHINE/SOFTWARE/JavaSoft/Java Development KitCletus你能为为什么不进行彻底的搜索辩护吗?直觉上我同意这一点,但我想找一个强有力的理由。彻底搜索需要在所有硬盘上搜索文件java.exe或javac.exe(假设为windows),这可能需要很多时间。建议您将搜索限制为C:\Program files\和%PATH%环境变量,以及上面列出的两个变量。