JAVA_HOME环境变量存在的原因是什么?

use*_*949 89 java environment-variables java-home

许多基于java的应用程序需要设置JAVA_HOME env变量.这个变量的目的是什么?

kam*_*aci 22

环境变量是包含驱动器,路径或文件名等信息的字符串.

JAVA_HOME环境变量指向Java运行时环境(JRE)安装在您的计算机上的目录.

  • 一个更正:JAVA_HOME应该指向JDK而不是JRE.许多应用程序不关心差异,但对某些人来说意义重大. (39认同)
  • JDK中还有JRE文件夹.因此,在JAVA_HOME的帮助下,应用程序可以找到JDK以及JRE. (4认同)

Haa*_*kon 18

目的是指出Java的安装位置.$JAVA_HOME/bin/java应该执行Java运行时.

  • 但它是愚蠢的,因为java应该在路径中,并且二进制文件可以定位自己并使用相对路径打开其他文件. (4认同)
  • 当java在*PATH上*不*时,例如当您安装多个SDK时,它很有用. (3认同)

kar*_*bal 8

根据@dirai 的说法,这里 JAVA_HOME不是由 Java 本身使用,而是由一些第三方工具使用,例如 Apache Tomcat。然而,大多数应用程序可以在没有设置此变量的情况下工作,但有些应用程序可能会出现意外行为。


djn*_*jna 7

当您运行Java程序时,您需要首先启动JVM,通常这是通过运行可执行文件来完成的,在Windows上这是java.exe.您可以通过多种方式获得该功能,例如只提供完整路径:

C:\somedir\bin\java.exe
Run Code Online (Sandbox Code Playgroud)

或者可能在你的PATH上.

您将某些类文件或包含类文件的Jar文件指定为命令行参数,这些类文件是您的程序.但这还不够,java.exe本身需要各种其他资源,尤其是所有Java库.通过设置环境变量JAVA_HOME,可以指定JRE的位置,从而指定所有这些运行时资源.您应该确保您执行的特定Java与JAVA_HOME的设置匹配.

您可能还需要JAVA_HOME\bin尽早放在路径上,这样如果java.exe生成自己的副本(例如编译JSP),它就会选择正确的版本.


sgo*_*les 5

JAVA_HOME是一个环境变量.

它必须在不同的操作系统上设置.查看以下链接.

另请参阅此处以获取更多信息.


小智 5

JAVA_HOME允许您运行多个 java 安装中的任何一个。即使您/usr/lib/jvm/java-1.8.0/bin/java 首先在 PATH 中包含 ,作为环境设置的问题,能够说JAVA_HOME=/usr/lib/jvm/java-1.5.0并让您运行程序时使用的默认“java”是有用的,而是使用另一个。这允许程序员使用他们需要的 java,即使它没有安装在正常的系统位置,并测试或提供与该替代版本的反向兼容性。而且它不容易被其他已安装的程序在 PATH 中重置,例如 java 本身的主要版本更新。