在 Windows 中,JAVA_HOME
必须指向 JDK 安装文件夹(以便 JAVA_HOME/bin
包含所有可执行文件,而 JAVA_HOME/libs
包含所有默认 jar
库)。
如果我下载 Sun 的 JDK 包并将其安装在 Linux 中,则过程相同。
但是,我需要使用 Kubuntu 的默认 OpenJDK 包。问题是所有可执行文件都放在/usr/bin
中。但是这些 jar 放在 /usr/share/java
中。由于它们不在同一个 JAVA_HOME
文件夹下,因此我在使用 Grails 时遇到了问题,并且可能会遇到其他需要标准 Java 结构的应用程序的问题。
如果我使用:
JAVA_HOME=/usr
所有想要使用任何 Java 可执行文件的应用程序和脚本都可以使用标准过程
<call $JAVA_HOME/bin/executable
。但是,由于 jar 位于不同的位置,因此并不总是能找到它们(例如:在 grails 中,我得到了native2ascii
的ClassDefNotFound
)。另一方面,如果我使用:
JAVA_HOME=/usr/share/java
找不到任何 Java 可执行文件(
java
、javac
等)。
那么,在基于 Debian 的 Linux 中处理 JAVA_HOME
变量的正确方法是什么?
感谢您的帮助, 路易斯
最佳答案
最终对我有用(Grails 现在运行顺利)几乎就像 Steve B. 指出的那样:
JAVA_HOME=/usr/lib/jvm/default-java
这样如果用户更改了系统的默认JDK,JAVA_HOME
仍然有效。
default-java
是指向当前 JVM 的符号链接(symbolic link)。
关于java - 基于 Linux OpenJDK Debian 的发行版的 JAVA_HOME 环境变量的正确目标是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663658/