2010-07-02 50 views
0

在我的C++应用程序中获取java.home位置的最佳方法是什么?现在我从注册表中获得它,但想知道是否有更好/更简单/更清洁的方法。获取java.home在C++中的位置

感谢, 塞尔

+0

注册表可能是您在Windows上最好的选择。出于好奇,为什么你需要Java主目录的位置? – Tom 2010-07-02 17:28:20

+0

@Tom:这不是很容易解释,但我会尝试。我有这个启动JAR文件的AIR 2应用程序。为了启动该文件,我需要java.exe,因为它可以安装在不同的位置,我想检查它的第一个位置。 – sjespers 2010-07-02 17:36:48

+0

据我所知,除了JAVA_HOME之外,注册表是唯一的其他方式。 – Powerlord 2010-07-02 18:03:46

回答

1

如果JAVA_HOME设置为Java主目录。如果不是val将为空。

char* val = getenv("JAVA_HOME");

+0

设置JAVA_HOME环境变量似乎不是默认Java安装过程的一部分,因此在许多情况下它不会存在。 – sjespers 2010-07-02 17:37:48

+0

这是错的。 JAVA_HOME和java.home是非常不同的野兽。查看JVM的代码。 – ingyhere 2013-05-14 03:57:32

0

如果你在Unix/Linux上,也许你可以做“哪个java”。如果您需要C++的帮助,请参阅How to execute a command and get output of command within C++ using POSIX?

如果您使用的是Windows系统,则会出现一个“which.bat”,这是我过去成功使用的一个“which.bat”,虽然它不是很好。你必须为它谷歌。

希望这可以指出你在正确的方向!

0

在Windows安装的System32目录中经常会有javaw的副本,因此getenv("windir")和连接"\System32\javaw.exe"

然后第二个选择是打开文件浏览器对话框来选择javaw.exe的位置。