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

时间:2019-04-25 21:26:37

标签: java air environment-variables

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

除了找到正确版本的二进制文件外,它还用于其他用途吗?应用程序似乎从未将其用于其他任何用途,包维护者,系统管理员和用户有责任在$PATH中使用它们。有方便的虚拟环境管理器,可让用户在环境之间轻松切换,并选择已保存的$PATH预设,该预设指向给定用户会话的给定二进制文件的正确版本。通常可以编写用于设置自定义环境变量的“ onSwitch”挂钩,但这总是需要额外的工作。

有人建议它可以帮助派生的应用程序运行与其父版本相同的二进制文件版本,但是由于两个进程都应从$PATH运行二进制文件并且继承了$PATH,因此已经解决了该问题来自父进程的子进程。

诸如Tomcat和Gradle或Adobe AIR之类的项目的开发人员依赖$*_HOME变量而不是$PATH提供的变量的原因是什么?该约定来自何处,为什么仍在使用?

2 个答案:

答案 0 :(得分:1)

我猜想,只要您只运行一个或多个都依赖相同JDK / JRE版本的应用程序,只需$ PATH就可以了。但是,如果您有多个依赖于不同JDK / JRE版本的应用程序,则$ _HOME vars将派上用场。因此,例如,您可能有一个JAVA 8应用程序和一个仍在使用JAVA 6的旧应用程序,它们通过不同地配置它们的$ _HOME vars在同一台机器上运行。

如果您未设置依赖这些环境变量的开源应用程序,则可能还会遇到问题。

答案 1 :(得分: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即可,而不用输入长路径。

可能,不同的操作系统具有不同的设置路径样式。 (我想)很久以前,人们就在旧的OS上使用过它,并且可能已成为某种惯例或习惯。 (我认为$ JAVA_HOME之所以出现是因为人们以前很难设置路径。)

我也有与您类似的想法,并且我喜欢您的好奇心和推理能力,因此我想以有限的知识为您提供帮助。希望我的帮助很小。 (也希望我能理解您的问题。)