为什么JVM在没有JAVA_HOME的情况下工作? $env ...

为什么JVM在没有JAVA_HOME的情况下工作? $env ...,java,java-home,Java,Java Home,当我尝试在macOS上打印shell环境时,我发现没有JAVA_主页,但我的JVM仍然可以工作 所以我很困惑,我只是想了解当shell env没有指示JDK时JVM是如何找到JDK的位置的 那么我的JDK位置是/Library/Java/JavaVirtualMachines/JDK-9.0.1.JDK,如果我移出这个文件夹,JVM将无法工作 我知道这没用,而且很愚蠢。但是我只是想完全理解这是如何工作的,请帮助。JVM不需要JAVA_HOME环境变量。一旦将其安装到/Library/Java/J

当我尝试在macOS上打印shell环境时,我发现没有JAVA_主页,但我的JVM仍然可以工作

所以我很困惑,我只是想了解当shell env没有指示JDK时JVM是如何找到JDK的位置的

那么我的JDK位置是/Library/Java/JavaVirtualMachines/JDK-9.0.1.JDK,如果我移出这个文件夹,JVM将无法工作

我知道这没用,而且很愚蠢。但是我只是想完全理解这是如何工作的,请帮助。

JVM不需要JAVA_HOME环境变量。一旦将其安装到/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk中,内部bin目录就会添加到PATH环境变量中,或者使用一些其他机制(如更新替代方案)将Java可执行文件放入系统路径中


通常是需要JVM的第三方工具,例如Apache Maven或Tomcat,它们使用JAVA_HOME环境变量查找已安装的JVM。

启动程序时,操作系统允许程序查找其可执行文件的加载位置,这只是操作系统的一个基本功能。JVM不使用JAVA_HOME环境变量,不必为了JVM而设置它。