根据几个帖子(例如,迈向JAVA_HOME的"真实"定义),并搜索一些可用的文档,JAVA_HOME与JVM本身无关,并且没有被它使用.
然而,有些软件需要设置它,可能与系统属性的值完全相同java.home.根据这一假设java是在PATH,反正是有挤压此系统属性指出,在Windows/Unix/Mac类似之间移植---除了在编写和编译代码的这一小撮行系统输出属性的JVM的?
我真的希望一些不太知名的命令行选项或其他可爱的技巧.假设jdk(而不是jre)会好的.如何与一些自我指涉的东西jps,jstack,jidunnothatitevenexits?
jshell在Java-9中让它变得简单.但我需要一个Java-8的解决方案,甚至可能是-7.:-(
Nashorn JavaScript引擎在Java 8中可用:
$ jjs
jjs> print(java.lang.System.getProperty("java.home"))
Run Code Online (Sandbox Code Playgroud)
这是JavaScript,而不是Java代码.;-)
也适用于Java 9.可悲的是,不是在Java 7中.
更新
我认为这适用于7,8和9.
jrunscript -e 'print(java.lang.System.getProperty("java.home"))'
Run Code Online (Sandbox Code Playgroud)
更新2
允许反转引号字符的角色......
jrunscript -e "print(java.lang.System.getProperty('java.home'))"
Run Code Online (Sandbox Code Playgroud)
...而且显然是Windows PowerShell所必需的.