java - 朝向 JAVA_HOME 的 "true"定义

标签 java java-home

作为一个在*NIX系统(OS X,Ubuntu,......这需要设置 JAVA_HOME :

例如

  • MAVEN : "JAVA_HOME,指的是你的JDK目录"
  • HADOOP:“JAVA_HOME,指定 Java 1.5.x 安装路径”
  • SUN:“JAVA_HOME 是包含 JRE 的目录”

因此我有 2 个关于这个问题的问题(也欢迎任何见解,但具体来说,我有这两个问题):

1) mac os X java 安装是否将目标从“JavaVM.frameworks”目录复制到 usr/bin 中?

2) JAVA_HOME 的“定义”是什么?显然,我们不能简单地将 JAVA_HOME 定义为“安装 java 的地方”,因为这个定义是模棱两可的,因为 java 可以存在于 HOME 位置(即/System/Library/Fraemworks/.....),或者或者,它也可能直接在/usr/bin 目录中?

我的想法

我相信 JAVA_HOME 实际上不仅仅指二进制“java”程序。 JAVA_HOME 可能是指一组与 Java 相关的目录和二进制文件的位置......但是,我仍然不太清楚这包括什么,我提出的这个定义是否足够精确以至于有用。

最佳答案

JAVA_HOME 没有“真正的”定义。此变量不被 Java 运行时环境使用,并且没有作为 Java 平台的一部分的规范。

它只是一些在 Java 平台上运行的应用程序所使用的约定。由于没有标准,每个应用程序都可以自由地制定自己的规则来决定这个变量应该引用的目录;您应该阅读应用程序的文档以找出它需要什么。

就是说,如果您将它设置为 JDK 安装的顶级目录(不是 JDK 中的 JRE,而是 JDK 本身),我发现的每个使用此变量的应用程序都可以工作。此目录应包含分别包含 java 可执行文件和运行时库的“bin”和“lib”子目录。

如果您将它指向 JRE,某些应用程序也能正常工作,但如果它需要像 javac 这样的开发工具,它就会失败。

通常,当我运行一个不需要它的工具时,我会在命令行上指定 JAVA_HOME,因为我使用多个版本的 Java,如下所示:

JAVA_HOME=/usr/local/jdk1.6.0_29 ant

关于java - 朝向 JAVA_HOME 的 "true"定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173120/

相关文章:

java - 如何将数组列表中的值从 AsyncTask 类发送到 Android 中的另一个类?

java - 我正在尝试 Spring MVC,当我在 Controller 类中添加 @Autowired 时,出现以下错误 :

java - 扫描仪显示 JAVA_HOME 存在,但不是有效的 Java Home

windows - 由于 JAVA HOME,Tizen-sdk-for-wearable-setup 安装问题

java - ubuntu java环境路径,bash :/etc/environment: permission denied?

JAVA_HOME 未设置

java - 为什么这个语句被认为是原子的?

java - 使用正则表达式识别存在的 html 标签

java - 如何在Tomcat中启动Mule?

android - 在mac中设置ANDROID_HOME环境变量