我~/.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 主页
答案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
这应该可以解决你的问题。