加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

实现JAVA_HOME的“真实”定义

发布时间:2020-12-14 05:40:27 所属栏目:Java 来源:网络整理
导读:作为在NIX系统(OS X,Ubuntu,…)之间切换的 Java开发人员,尽管我可以随时“获
作为在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读