将Java.home从JVM中取出而不编写Java代码来打印它

时间:2017-09-26 19:59:27

标签: java jvm

根据几个帖子(例如Towards the "true" definition of JAVA_HOME ),并搜索了一些可用的文档,JAVA_HOME与JVM本身无关,并且未被它使用。

然而,有些软件需要设置它,可能与系统属性java.home具有的值完全相同。假设java位于PATH中,无论如何都要将此系统属性从Windows / Unix / Mac之间可移植的JVM中挤出来 - 除了编写和编译这些少数几行之外sysout属性的代码?

我真的希望一些鲜为人知的命令行选项或其他可爱的技巧。假设jdk(而不是jre)会好的。 jpsjstackjidunnothatitevenexits的某些自引用内容怎么样?

Java-9中的

jshell使其变得简单。但我需要一个Java-8的解决方案,甚至可能是-7。 : - (

1 个答案:

答案 0 :(得分:5)

Nashorn JavaScript引擎在Java 8中可用:

$ jjs
jjs> print(java.lang.System.getProperty("java.home"))

这是JavaScript,而不是Java代码。 ; - )

也适用于Java 9。可悲的是,不是在Java 7中。

<强>更新

我认为这适用于7,8和9。

jrunscript -e 'print(java.lang.System.getProperty("java.home"))'

更新2

允许反转引号字符的角色......

jrunscript -e "print(java.lang.System.getProperty('java.home'))"

...而且显然是Windows PowerShell所必需的。