JAVA_HOME
我正在尝试在 Ubuntu 操作系统中进行设置。我已jdk 1.7
复制/usr/lib/jvm
并设置了JAVA_HOME
文件/etc/profile
。
文件夹内容/usr/lib/jvm
如下:
shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java java-1.6.0-openjdk java-6-openjdk java-6-openjdk-i386 jdk1.7.0_01
java-1.5.0-gcj-4.6 java-1.6.0-openjdk-i386 java-6-openjdk-common java-7-openjdk-i386
文件的最后几行/etc/profile
如下:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin
完成所有这些后,当我运行java -version
命令时,我得到以下输出:
shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)
当我运行ls -lah
命令时,我得到以下输出:
shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java
有人能告诉我我遗漏了什么吗?为什么 Ubuntu 仍然指向 open jdk 而不是我的 jdk 7?
PS:我见过这类似问题及其答案,但该问题与 Windows 操作系统有关,而与 Ubuntu 无关,所以我重新发布了针对 Ubuntu 的类似问题。
答案1
您设置了 JAVA_HOME 环境变量,然后使用它来设置 PATH。但是,您设置的路径也由现有路径组成。本质上,您只是在现有路径中添加了其他内容。
路径末尾添加了 JDK1.7 的路径。在命令行中输入“java --version”时,系统会从头到尾搜索该路径,直到找到包含命令“java”的路径。因此,您看到的是来自其他 Java 版本之一的版本输出。
我在 Ubuntu 上通常会做的是查看我的路径:
echo $PATH
然后在开头附近寻找可能的 JVM 路径。此时,您将有几种方法可以解决此问题:
创建一个将系统指向新 Java 路径的符号链接。
删除旧的 Java 版本并将其从您的路径中删除。
我会选择选项 2。删除不需要的东西不会造成太多困惑。
答案2
我遇到了同样的问题,答案隐藏在 PATH 中:
运行“$ env | grep java”显示:
PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14
但运行“java -version”仍然显示:
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
我发现我的 PATH 在“/java/jdk1.6.0_14/bin”之前有“/usr/bin”,执行“ll /usr/bin | grep java”后我得到:
lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*
我将符号链接更改为正确的链接,问题就解决了。您也可以更改路径的顺序:
从
export PATH=$PATH:$JAVA_HOME/bin
到
export PATH=$JAVA_HOME/bin:$PATH
答案3
我个人在全新安装 Ubuntu 12.04 时也遇到了同样的问题。我所要做的就是使用以下命令卸载特定软件包:
sudo apt-get remove openjdk-6-jre-headless
这删除了 /etc/alternatives 中的链接并将其更新为已安装的 java 1.7
只是想分享,因为这完成了 jmort253 答案中的第 2 点。