作为安装程序的一部分,我正在构建,我想检查是否已经安装了Java Development Kit(特别是JDK,JRE不会这样做)。在我的本地计算机上,我可以清楚地看到注册表中的密钥(HKLM \ SOFTWARE \ JavaSoft \ Java Development Kit),但是下面的代码(C#)找不到所说的密钥:
RegistryKey jdkKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Development Kit");
当我使用以下代码调查" HKLM \ SOFTWARE \ JavaSoft"下的哪些密钥时,Java Development Kit不在那里。
string[] keyNames = Registry.LocalMachine.OpenSubKey("SOFTWARE\\JavaSoft").GetSubKeyNames();
我也以编程方式查看了我的环境变量,似乎没有任何东西指向JDK存在(它就在那里,如上所述,它在注册表中,并且我正在使用它来为我开发安装程序的Java开发,有趣的是。
关于如何确定是否安装了JDK的任何想法?正如我所说,仅仅JRE是不够的,因为我在运行时进行了一些编译,我需要JDK。
答案 0 :(得分:1)
试试这个
System.out.println(System.getProperty("java.library.path"));
如果不应该安装空
答案 1 :(得分:1)
您可以通过获取整个系统环境变量System.getenv();
找到JDK,找到jdk存在或执行Windows命令"where javac"
和Linux "whereis javac"
。对于示例代码get environment variables和
Command executor by java
答案 2 :(得分:0)
如果要在计算机上查找Java 开发工具包,可以尝试检查JAVA_HOME
环境变量,该变量通常指向JDK的安装根目录。 / p>
string javaHome = Environment.GetEnvironmentVariable("JAVA_HOME");
if (javaHome == null)
Console.WriteLine("JDK seems not to be present");
答案 3 :(得分:0)
看来我正在咆哮错误的(注册表)树。我没有意识到注册表根依赖于我的应用程序的配置平台。因为我的应用程序的目标平台设置为x86,所有搜索都从我的注册表的Wow6432Node开始。将我的目标平台更改为“任何CPU”修复此问题,我可以通过编程方式访问我的注册表中的所有树,因为它们在regedit中以图形方式显示。
值得注意的是我使用Visual C#2010 Express来执行此操作,因此更改我的目标平台必须通过直接编辑我的“.csproj”文件的XML来完成,因为没有UI选项可以执行此操作