当前位置:  开发笔记 > 编程语言 > 正文

为什么Java SDK安装程序没有设置JAVA_HOME?

如何解决《为什么JavaSDK安装程序没有设置JAVA_HOME?》经验,为你挑选了2个好方法。

我总是想知道为什么我必须在安装Java SDK后手动设置JAVA_HOME环境变量.

JAVA_HOME = c:\ Program Files\Java\jdk1.6.0_12

Visual Studio至少提供一个批处理文件来设置这些环境变量:

调用"c:\ Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

Java有类似的东西吗?我正在尝试制作一个构建脚本,该脚本应该在安装Java SDK之后才能工作.我不希望人们在PC上弄乱环境变量.



1> VonC..:

您可以根据需要安装任意数量的Java版本.

设置修改本地环境变量是危险的JAVA_HOME,因为它可能引用现有的Java安装.

这与所谓的"平台相关问题"无关.;)

由于脚本可能依赖于JAVA_HOME自我启动,因此对于要修改的新Java安装来说,这将是一个灾难JAVA_HOME:所有这些脚本突然必须使用新的可能不兼容的JVM启动.

此外,通过设置$JAVA_HOME/bin%JAVA_HOME%/bin在您的路径中,您可以动态更改JAVA_HOME为您要使用的任何Java版本,而无需使用PATH变量.


Michael Borgwardt在评论中提出了有趣的后续问题

尽管如此,这并不能解释为什么安装程序在以前没有设置的情况下也没有设置JAVA_HOME.

答案很简单:

该设置可以不知道,如果一个脚本已经依赖于JAVA_HOME与否.

含义:某些脚本可以测试JAVA_HOME值,如果没有设置,请参考其他地方安装的另一个JVM(不要忘记通过"install",只能引用"复制":JDK/JRE并不总是由建立)

如果设置JAVA_HOME,则可能会破坏某些脚本的默认行为.

不想打扰依赖于env var而没有设置声音的假设脚本对我来说毫无意义的偏执 - 如果脚本这样做,那么当安装一个JVM时,它显然要使用不同的JVM - 没有理由避免这种情况.

嗯......甜蜜.为了每天处理大量的部署问题(对于我店里的内部应用程序),我可以向你保证:这是非常理智的"偏执"待遇.
当您部署到(非常)大型用户集时,您不希望对其平台和配置做出任何假设."明显的WANTS"是我不敢做的假设(或者我将我的手机重定向到你的手机;)并且你处理了愤怒的电话.

例如,我们有许多脚本使用来自sun的1.4.2 JVM启动(JAVA_HOME未设置在开发平台上,默认路径直接设置在脚本中),或者使用来自JRockit的1.4.2(JAVA_HOME设置,因为它是预期的目标)关于集成,预生产和生产平台).

但是我们定期安装新的JDK1.6.x,因为我们用它来启动eclipse.

假设那些脚本想要它们的JAVA_HOME集合......并且不再有任何作用.

...... 罗伯特·格兰特(Robert Grant)对此进行了现场评论:

您正在描述需要一个特定版本的脚本,但仍然会查看全局JAVA_HOME.这只是糟糕的脚本.

虽然这可能或可能不是真的,但这也恰恰说明了我的观点:
"你不想做出任何假设":对他们的平台/设置没有假设,也没有假设他们的"最佳实践".
前者可能听起来很偏执,后者是普通常识:认为你的产品(这里是一个JDK设置)不会破坏用户环境中的任何东西,因为用户"正确"地想出了他的脚本......会疯了.


GvS建议:

或者它可以选择执行此操作,默认情况下禁用

这意味着在设置屏幕中包含另一个选项,应该由用户仔细审查,并且可能会产生意想不到的后果,即使用户选择它认为他知道自己在做什么......

这根本不值得.


尽管如此,这并不能解释为什么安装程序在以前没有设置的情况下也没有设置JAVA_HOME.

2> Michael Borg..:

我不认为JAVA_HOME是Sun发明或支持的约定.

他们可能还记得CLASSPATH环境变量**的惨败,并且更喜欢让它远离环境变量.

**鼓励这是在早期Java SDK和文献中设置JVM类路径的主要方法,并导致用户和各种应用程序弄乱环境变量,覆盖彼此的更改并依赖于相互矛盾的内容.


很好的历史参考.+1
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有