小编典典

基于Linux OpenJDK Debian的发行版的JAVA_HOME环境变量的正确目标是什么?

java

在Windows中,JAVA_HOME必须指向JDK安装文件夹(以便JAVA_HOME/bin包含所有可执行文件和JAVA_HOME/libs所有默认jar库)。

如果我下载了Sun的JDK捆绑软件并将其安装在Linux中,则过程相同。

但是,我需要使用Kubuntu的默认OpenJDK软件包。问题是所有可执行文件都放在中/usr/bin。但是罐子放在里面/usr/share/java。由于它们不在同一个JAVA_HOME文件夹中,因此我在Grails上遇到了麻烦,也许其他期望使用标准Java结构的应用程序也会遇到麻烦。

  1. 如果我使用:
    JAVA_HOME=/usr
    

想要使用任何Java可执行文件的所有应用程序和脚本都可以使用标准过程call $JAVA_HOME/bin/executable。但是,由于罐子位于不同的位置,因此并不总是可以找到它们(例如:在我要的grails
ClassDefNotFoundnative2ascii)。

  1. 另一方面,如果我使用:
    JAVA_HOME=/usr/share/java
    

在Java可执行文件(没有javajavac等等)都可以找到。

那么,JAVA_HOME在基于Debian的Linux 中处理变量的正确方法是什么?

谢谢您的帮助,路易斯


阅读 214

收藏
2020-09-28

共1个答案

小编典典

最终对我有用(Grails现在可以正常工作)的工作几乎就像Steve B.指出的那样:

JAVA_HOME=/usr/lib/jvm/default-java

这样,如果用户更改了系统的默认JDK,它JAVA_HOME仍然可以工作。

default-java 是到当前JVM的符号链接。

2020-09-28