在Ubuntu中设置或获取$ JAVA_HOME的系统范围的方法?


8

我想知道Ubuntu本身是否提供了一种系统范围内的方法来查找当前值,JAVA_HOME或者是否有合适的位置进行设置JAVA_HOME

Mac OS X在此方面做得很好,因为/usr/libexec/java_homecommand返回了current JAVA_HOME。但是对于Ubuntu,我发现的材料总是告诉我将$JAVA_PATH指向的位置设置为静态路径,该路径存储在中~/.bash_profile

但是,我认为这种方法有几个缺点:

  1. Java更新后,迷你版本号将更改,从而使静态路径不再可用。
  2. 改变我的系统中使用与JRE后update-alternatives,我要修改$JAVA_HOME.bash_profile。额外的工作很烦人。
  3. 某些$JAVA_HOME程序根本不知道.bash_profile。我必须设置$JAVA_HOME他们的启动脚本,因此$JAVA_HOME对我而言,一种简单易行的获取方法似乎很关键。

好吧,任何建议都欢迎。谢谢。

Answers:


6

有点骇人听闻,但请在您/etc/profile的系统内设置此行:

export JAVA_HOME=$(dirname $(dirname $(readlink -e /usr/bin/javac)))

一些系统管理员喜欢摆弄PATH,因此/ usr / bin不一定是第一位的。为确保您选择了将要实际运行的版本的路径,更好的重新破解方法可能是: export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
SimonB

如果路径存在,这将起作用。有没有办法使它在没有Java的系统上保持静音?
greggles

在Mac中如何做到这一点?“ readlink -e”不起作用。
Artanis Zeratul

1

您可以在中设置环境变量/etc/environment,该变量由PAM设置。还应该有一些符号链接,/usr/lib/jvm这些符号链接在次要版本中不会更改。

JAVA_HOME=/usr/lib/jvm/java-6-sun

0

设置路径系统配置文件

编辑系统路径文件/ etc / profile

sudo gedit /etc/profile

最后添加以下几行

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH

有关http://javaandme.com/的完整安装指南。


0

如果您确定可以调用“ java”命令,那么这对您有用吗?

export JAVA_HOME=$(dirname $(java -XshowSettings:properties -version 2>&1 | grep 'java\.home' | awk '{ print $3 }'))

OP正在寻找一种$JAVA_HOME在整个系统范围内进行设置的方法,而不仅仅是在当前Shell中进行设置。
Celada

0

用户13742接受的解决方案假定服务器肯定已安装Java。如果您要将其添加到许多服务器的集中式脚本中,则会出现一些错误,例如:

dirname: missing operand
Try 'dirname --help' for more information.

为了避免这种情况,并且仅在服务器具有Java环境时才设置JAVA_HOME,这是一个小改进:

if [ -f "$(which javac)" ]; then
    export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
fi

我还合并了SimonB的更改,以用于which查找安装位置。


我可以放进去/etc/environment吗?
晋权
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.