java - 在使用alternatives的Linux系统上,JAVA_HOME的正确路径是什么?

标签 java java-home

确定 JAVA_HOME 的正确路径在 Ubuntu 系统上有点复杂,因为它使用替代方案。在我的机器上,这就是替代方法在到达实际的 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 等)?如果是前者,那么我觉得JAVA_HOME可以用/usr,如果是后者,那我觉得只能用JAVA_HOME了 正确的做法是牺牲替代功能。

最佳答案

好问题 - 我在 Linux 上使用“替代方案”并且一切都“正常工作” - 我从来没有真正考虑过它。

我相信这就是答案:

1) "alternatives"将符号链接(symbolic link)设置为你的 "真实"Java 当前配置的任何内容

2) 您需要做的就是将 $JAVA_HOME 设置为符号链接(symbolic link)

关于java - 在使用alternatives的Linux系统上,JAVA_HOME的正确路径是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085922/

相关文章:

java - 设置java_home奇怪的错误

ubuntu - 在 Ubuntu : ERROR: cannot find a JRE or JDK 上设置 Artifactory

java - 使用 '+' 运算符连接字符串后创建了多少个对象?

java - 任何了解 Streams、Buffer 及其在 Java 中的用法的教程?

java - 在对象B中,如何访问创建了对象B的对象A?

java - super() 构造函数中的初始化问题

java - 如何使用泛型返回泛型类的类类型?

java - Ant/Ubuntu/Eclipse JAVA_HOME

java - 无法使用maven命令行工具

java - $JAVA_HOME 变量随每个新终端而变化