有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#如何确定Windows Java安装位置

我正在尝试动态运行一个。来自C#程序集的jar(使用Process.Start(info))。现在,我可以通过控制台应用程序运行:

ProcessStartInfo info = new ProcessStartInfo("java", "-jar somerandom.jar");

然而,在一个程序集中,我不断得到Win32Exception的“系统找不到指定的文件”,并且必须将行更改为Java的完整路径,如下所示:

ProcessStartInfo info = new ProcessStartInfo("C:\\Program Files\\Java\\jre6\\bin\\java.exe", "-jar somerandom.jar");

这显然不行。我需要一种动态(但以声明方式)确定Java安装位置的方法

我开始考虑查看注册表,但当我到达那里时,我注意到版本有特定的键,甚至不能保证它们是数字的(例如“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6”和“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0\u 20”)

找到最新java的最可靠的“长期”解决方案是什么。C#应用程序的exe路径

非常感谢

-编辑-

多亏了GenericTypeTeaStephen Cleary的答案,我用以下方法解决了这个问题:

private String GetJavaInstallationPath()
{
    String javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
    using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(javaKey))
    {
        String currentVersion = baseKey.GetValue("CurrentVersion").ToString();
        using (var homeKey = baseKey.OpenSubKey(currentVersion))
            return homeKey.GetValue("JavaHome").ToString();
    }
}

共 (0) 个答案