java.home 和 JAVA_HOME 之间的区别
Difference between java.home and JAVA_HOME
在我的 java 代码中,我有这一行 System.getProperty("java.home")
。在某些环境中,此 returns 与设置为 JAVA_HOME
的环境变量的值相同。
但在某些环境中,System.getProperty("java.home")
returns 与 JAVA_HOME
完全不同的值。
所以我的问题是从java的角度来看java.home
和JAVA_HOME
有什么区别?
我查了一下,JAVA_HOME
是jdk的安装路径,java.home
是jre的安装路径,但是为什么不能匹配,因为jre可以是其中的一部分jdk安装。
根据Oracle documentation java.home
is a system property that represents the installation directory of Java Runtime Environment. JAVA_HOME
is an environment variable - not a system property. Please refer to this post查看系统属性和环境变量有什么区别
您也可以参考this post了解更多JAVA_HOME
。
如你所说,JAVA_HOME指向环境变量给出的JDK安装路径(%JAVA_HOME%)。
但是 java.home 指向 JRE installation path,现在它 returns 用于 运行 应用程序的 JRE ,请记住您可以在同一个 server/computer
上安装多个版本的 JRE 和 JDK
并且您可以 运行 指定要使用的 jre 或 jdk 的应用程序。
因此,例如,如果您的环境路径中有:
%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_24
但是如果您 运行 应用程序使用特定的 jre:
"C:\Program Files (x86)\Java\jre1.8.0_73\bin\java" -jar TheJavaFile.jar
在 运行 时间的应用程序中,您将获得 java.home 不同版本的 JAVA_HOME
这可以解释为什么在某些情况下您会得到变量和系统的不同版本 属性。
此外,请注意路径可能完全不同,因为 JRE 与 JDK 是不同的产品,因此它们安装在不同的位置,因为它们是独立的
现在,关于 JDK 与 JRE 的区别,这张图解释得很清楚:
JDK is a superset of JRE, and contains everything that is in JRE, plus
tools such as the compilers and debuggers necessary for developing
applets and applications. JRE provides the libraries, the Java Virtual
Machine (JVM), and other components to run applets and applications
written in the Java programming language.
在我的 java 代码中,我有这一行 System.getProperty("java.home")
。在某些环境中,此 returns 与设置为 JAVA_HOME
的环境变量的值相同。
但在某些环境中,System.getProperty("java.home")
returns 与 JAVA_HOME
完全不同的值。
所以我的问题是从java的角度来看java.home
和JAVA_HOME
有什么区别?
我查了一下,JAVA_HOME
是jdk的安装路径,java.home
是jre的安装路径,但是为什么不能匹配,因为jre可以是其中的一部分jdk安装。
根据Oracle documentation java.home
is a system property that represents the installation directory of Java Runtime Environment. JAVA_HOME
is an environment variable - not a system property. Please refer to this post查看系统属性和环境变量有什么区别
您也可以参考this post了解更多JAVA_HOME
。
如你所说,JAVA_HOME指向环境变量给出的JDK安装路径(%JAVA_HOME%)。
但是 java.home 指向 JRE installation path,现在它 returns 用于 运行 应用程序的 JRE ,请记住您可以在同一个 server/computer
上安装多个版本的 JRE 和 JDK并且您可以 运行 指定要使用的 jre 或 jdk 的应用程序。
因此,例如,如果您的环境路径中有:
%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_24
但是如果您 运行 应用程序使用特定的 jre:
"C:\Program Files (x86)\Java\jre1.8.0_73\bin\java" -jar TheJavaFile.jar
在 运行 时间的应用程序中,您将获得 java.home 不同版本的 JAVA_HOME
这可以解释为什么在某些情况下您会得到变量和系统的不同版本 属性。
此外,请注意路径可能完全不同,因为 JRE 与 JDK 是不同的产品,因此它们安装在不同的位置,因为它们是独立的
现在,关于 JDK 与 JRE 的区别,这张图解释得很清楚:
JDK is a superset of JRE, and contains everything that is in JRE, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language.