与许多其他系统一样,RedHat系统及其衍生产品(如CentOS和Fedora)使用替代机制来支持使用不同的主要版本的OpenJDK.这导致有许多候选者作为JAVA_HOME环境变量的值,例如:
> / etc / alternatives / jre
> / etc / alternatives / java_sdk
> /etc/alternatives/java_sdk_1.x.0
> / etc / alternatives / java_sdk_openjdk
> /usr/lib / jvm / java
> /usr/lib/jvm/java-1.x.0
这些中的任何一个都被认为是官方的标准选择吗?请注意,我知道在其名称中包含或不包含Java版本的选项之间的区别.我还有意识地省略了包含次要版本信息的名称,因为它们需要在每次更新后进行修改.
顺便说一句,以上所有都是符号链接.实际安装目录位于/usr/lib / jvm中,并在其名称中包含特定版本.例如Java的1.8.0-的OpenJDK-1.8.0.131-0.b11.el6_9.x86_64.
解决方法:
我认为这取决于用例/您的个人用法,例如默认情况下,我会将JAVA_HOME指向当前的JRE(我认为这是/ etc / alternatives / jre)
在我的开发机器上,我可以让它指向当前的SDK.
也许我所有部署的软件都依赖于某些特定的java版本,因此我将JAVA_HOME指向该安装版本.
在大多数情况下,我根本不想设置它.相反,我希望程序失败,因为我没有指定我想使用哪个变体.
显然不是“哪个是官方标准选择”的答案,但我认为这也可能有所帮助.此外,这显然是我的意见,评论太长了.
以下也可能很有趣:
> Find JAVA_HOME and set it on RHEL(包含an answer指向:JBoss EAP Installation Guide – Install OpenJDK,它也提到设置JAVA_HOME,但保持打开状态,你应该使用哪一个.它只是提到它可能安装的路径)