为什么使用$ JAVA_HOME或$ AIR_HOME而不仅仅是$ PATH?

问题描述 投票:-1回答:2

我知道什么是$JAVA_HOME$AIR_HOME等,我知道如何设置它们。事实上,我正在为使用Java或Adobe AIR进行初始化的每个虚拟环境中设置它们,但我不明白为什么我应该这样做。我的问题更多的是忽略$*_HOME变量和仅使用系统提供的二进制文件(在$PATH中)的后果。

它是否用于寻找正确版本的二进制文件以外的任何其他内容?应用程序似乎永远不会将其用于其他任何事情,并且包维护者,系统管理员和用户有责任在$PATH中使用它们。有方便的虚拟环境管理器,允许用户在环境之间轻松切换,并选择保存的$PATH预设,指定给定用户会话的给定二进制文件的正确版本。虽然通常可以编写设置自定义环境变量的“onSwitch”钩子,但它总是需要额外的工作。

有人建议它可以帮助分叉的应用程序运行与其父级相同版本的二进制文件,但它已经处理好,因为两个进程都应该从$PATH运行二进制文件,而$PATH则由父进程继承子进程。

Tomcat和Gradle或Adobe AIR等项目开发人员依赖$*_HOME变量而不是$PATH提供的变量是什么原因?该惯例来自哪里,为什么仍然使用?

java air environment-variables
2个回答
1
投票

我想只要您运行单个应用程序或多个依赖于相同JDK / JRE版本的应用程序,只需$ PATH即可。但是如果你有多个依赖于不同JDK / JRE版本的应用程序,那么$ _HOME变量就派上用场了。因此,例如,您可以拥有一个JAVA 8应用程序和仍然使用JAVA 6的遗留应用程序,通过以不同方式配置其$ _HOME变量运行在同一台计算机上。

如果您没有设置这些环境变量,那么您也可能遇到依赖于这些环境变量的开源应用程序的问题。


1
投票

我希望我能正确理解你的问题。

据我所知,这是因为方便和安全(?)。

例如,假设你的java目录很长。 C:\ Program Files \ a \ b \ c \ d \ e(x86)\ Java \ jre1.8.0_201,您设置路径,以便您可以轻松访问'bin'文件夹中的exe文件。然后你想访问Java的'bin1'文件夹中的exe文件,然后你必须用分号设置另一个长路径来区分它们。然后你想在路径中添加'bin2'文件夹。它不仅会耗费你的时间,而且你的打字可能会犯错误。 (我的纯粹假设。我应该提出更好的例子。但现在想不出来。)

通过设置%JAVA_HOME%,设置环境变量既方便又安全。你可以添加%JAVA_HOME%bin%JAVA_HOME%bin1%JAVA_HOME%bin2而不是输入长路径。

可能不同的操作系统有不同的设置路径样式。 (我假设)很久以前,人们在旧操作系统中使用它,可能会成为某种惯例或习惯。 (我认为$ JAVA_HOME出现了,因为人们以前很难设置路径。)

我也有类似的想法,我喜欢你的好奇心和推理,所以我想用我有限的知识帮助你。希望我的帮助微不足道。 (我希望我理解你的问题。)

© www.soinside.com 2019 - 2024. All rights reserved.