在Windows中查找正在运行的JRE目录

3

如果我知道Java版本(例如1.6.0_31),如何在Windows计算机上编程方式(即在Java程序内部)查找相应的JRE位于哪个磁盘位置?


3
你只能查找正在运行的Java进程所在的位置。Java可以安装在系统的任何地方。你可以搜索可能的位置... - Peter Lawrey
不要忘记接受一个答案,或者如果不适用的话,请说明原因。 (如何在所有已安装版本中检测一个安装目录?) - PhiLho
4个回答

2

您可以通过读取 java.home 系统环境变量的值来获取它。请参考http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

但请注意,安全管理器可能会阻止您,如上文所述:

安全考虑:访问系统属性可能会受到安全管理器的限制。这在小程序中最常出现,它们无法读取某些系统属性,也无法写入任何系统属性。如需了解有关在 Java 丰富的互联网应用程序中访问系统属性的更多信息,请参阅“使用 Java 做更多事情”的“系统属性”课程。


据我所知,即使在小程序内部,您也可以禁用安全管理器,或者Oracle已经修复了这个漏洞?;-) - Peter Ilfrich
@Peter:我不知道那个bug - 尽量避免使用小程序 :-) - home

1

1
您可以查看当前系统属性java.home:
String installDirOfJRE = System.getProperty("java.home");

根据返回值,您可以期望(但仅是期望)其他版本的JRE将会在同一父文件夹中,因此您可以尝试搜索您想要找到的版本。

恐怕没有其他选择...


1
System.getProperty("java.runtime.version");

提供正在执行的虚拟机版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接