设置 JAVA_HOME 时出现问题

设置 JAVA_HOME 时出现问题

~/.bash_profile设置了以下内容:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/bin/java
export PATH=$PATH:/usr/lib/jvm/java-7-openjdk-i386/bin

保存并关闭后我运行:

sudo su
source .bash_profile

echo $PATH带来

root@ubuntu:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-7-openjdk-i386/bin

which java

/usr/bin/java

但如果我启动 smartgit 会出现以下警告

ip@ubuntu:/usr/share/smartgithg/bin$ ./smartgithg.sh 
Warning: /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java/bin/java does not exist

为什么 'which java' 没有指向我安装的新 java?为什么包含bin/java/两次 $PATH?

答案1

您可以使用命令选择 Java 版本update-alternatives

在终端中运行以下命令。

sudo update-alternatives --config java

并输入您想要使用的选择号码。

像这样:

选择 Java 版本

注意:以上描述是更改默认版本的过程。这不是这个问题的答案,但应该可以帮助您设置 JAVA 主页

答案2

Ubuntu 使用update-alternatives系统来管理应使用哪个 Java JDK 或 JRE 安装。这样,您可以安装多个版本的 Java,但仍可控制默认使用哪个版本。

这就是为什么which java不显示您安装的版本;/usr/bin/java只是一个符号链接。如果您运行,ls -l /usr/bin/java您将看到类似以下内容:

lrwxrwxrwx 1 root root 22 Jul  4  2013 /usr/bin/java -> /etc/alternatives/java

如果你顺着这条路跑,ls -l /etc/alternatives/java你会看到类似这样的景象:

lrwxrwxrwx 1 root root 39 Jul 15  2013 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java

但具体路径取决于您选择的版本。

您可以使用此命令选择要运行的 Java 版本:

sudo update-alternatives --config java

您的路径包含bin/java两次,因为您配置$JAVA_HOME不正确。$JAVA_HOME应该指向 Java 安装的根目录;在您的情况下,/usr/lib/jvm/java-7-openjdk-i386/。您将其指向java二进制文件本身。

你不应该需要添加$JAVA_HOME到你的,$PATH除非你手动安装 Java 并且不使用update-alternatives,因为/usr/bin它已经在你的$PATH

答案3

JAVA_HOME您在文件中错误地设置了变量~/.bash_profile。请将JAVA_HOME变量更改为:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/

然后做source ~/.bash_profile

这应该可以解决你的问题。

相关内容