java在使用替代方案的Linux系统上,java_HOME的正确路径是什么?
在Ubuntu系统上,为JAVA_HOME
确定正确的路径有点复杂,因为它使用了替代方法。在我的机器上,这就是备选方案如何在进入实际的java或javac之前创建至少两个级别的间接寻址
usr/bin/javac -> /etc/alternatives/
/etc/alternatives/java -> /usr/lib/jvm/jdk1.7/bin/javac
如果我将JAVA_HOME
设置为/usr/lib/jvm/jdk1.7
,那么如果我更新替代方案以使用另一个java,我的系统java可能会与JAVA_HOME
所指的java不一致
我的问题是,在使用替代方案的系统上JAVA_HOME
的正确值是多少。我倾向于认为JAVA_HOME
应该设置为/usr
通过这种方式,TOMCAT或使用它的任何其他软件,将把“bin”附加到JAVA_HOME
并找到它需要的所有可执行文件
这是使用替代方案的系统上JAVA_HOME
的正确值吗。大多数软件是只使用JAVA_HOME
来定位可执行文件,还是使用该值来定位与JDK捆绑在一起的其他工件(如安全策略fil等)?如果前者是真的,那么我觉得我们可以使用/usr
来JAVA_HOME
,但是如果后者是真的,那么我认为正确使用JAVA_HOME
的唯一方法就是牺牲替代功能
# 1 楼答案
我没有找到一个正确的直接解决方案,所以这里是我的解决办法 将以下内容添加到bachrc中
然后,无论何时使用替代方案更改JAVA版本,都要使用source重新加载JAVA_HOME
说明: 我所做的是从update alternatives app设置的变量中获取java类路径,然后从中删除bin/java部分,然后将其分配给java_HOME。这个过程发生在登录系统时。如果在会话中间更改java版本,则必须重新加载配置文件。
# 2 楼答案
好问题——我在Linux上使用“替代品”,所有东西都“正常工作”——我从来没有真正想过这一点
我相信这就是答案:
JAVA_HOME=/usr/lib/jvm/default-java
What is the correct target for the JAVA_HOME envrionment variable for a Linux OpenJDK Debian-based distribution?
1)“备选方案”将符号链接设置为“真正的”Java当前配置的内容
2)只需将$JAVA_HOME设置为符号链接