微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实现JAVA_HOME的“真实”定义

作为在NIX系统(OS X,Ubuntu,…)之间切换的 Java开发人员,尽管我可以随时“获取”我的JDK并运行,但似乎JAVA_HOME在许多需要JAVA_HOME的软件包中没有明确的定义被设置:

例如

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

因此,我有两个问题(任何见解也是欢迎的,具体而言,我有这两个问题):

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

原文地址:https://www.jb51.cc/java/121795.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐