java - 以编程方式检查Java开发工具包是否已安装

标签 java c# .net registry

作为安装程序的一部分,我正在构建,我想检查 Java 开发工具包是否已安装(特别是 JDK,JRE 不会)。在我的本地计算机上,我可以清楚地看到注册表中的 key (HKLM\SOFTWARE\JavaSoft\Java Development Kit),但以下代码(C#)没有找到该 key :

RegistryKey jdkKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Development Kit");

当我使用以下代码调查“HKLM\SOFTWARE\JavaSoft”下存在哪些键时,Java 开发工具包不存在。

string[] keyNames = Registry.LocalMachine.OpenSubKey("SOFTWARE\\JavaSoft").GetSubKeyNames();

我也以编程方式查看了我的环境变量,似乎也没有任何迹象表明 JDK 存在(它就在那里,正如我上面所说,它在注册表中,并且我正在使用它对于我正在为其构建安装程序的程序的 Java 开发,有趣的是)。

关于如何确定 JDK 是否已安装,有什么想法吗?正如我所说,仅 JRE 是不够的,因为我在运行时进行一些编译,为此我需要 JDK。

最佳答案

试试这个

System.out.println(System.getProperty("java.library.path"));

如果为空则不应安装

关于java - 以编程方式检查Java开发工具包是否已安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738116/

相关文章:

c# - 如何以特定格式显示日期?

c# - 如果使用路径,绑定(bind)不会刷新

java - 我们继承自 Object 吗?

Java 在 `finally` block 后不打印消息

c# - 商业 WPF 应用程序的映射

c# - 在 C# 或 C++ 中搜索另一个音频中的音频

c# - C# 中的构造函数和初始化器

.net - ASP.Net MVC 框架和数据绑定(bind)

java - 播放一系列剪辑,剪辑之间有延迟

java - 当我需要在关闭 ResultSet 之前填充 ResultSet 时,如何抽象出 JDBC 代码?