编辑.bashrc不会改变JAVA_HOME

时间:2015-06-14 17:30:58

标签: java linux ubuntu jvm

我想在ubuntu中更改为JAVA 8。

我更改了〜/ .bashrc中的JAVA_HOME以及/ etc / environment中的源代码。这导致JAVA_HOME发生变化。

PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jre1.8.0_45/bin:/home/PepperBoy/Desktop/hadoopinstallation/hadoop-1.2.1/bin
PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ echo $JAVA_HOME
/usr/lib/jvm/jre1.8.0_45

PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
export JAVA_HOME="/usr/lib/jvm/jre1.8.0_45/bin/"

但是,我的java版本仍然显示早期版本。

PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~precise1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

Also, running the below commmand only gives me options for java 6 and 7, not for java 8
PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
* 2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 

最后,运行下面给了我一个符号链接,它指出了系统正在使用的实际java可执行文件。我把它编辑到我下载的java 8,现在我的java -version显示了正确的版本。

PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ which java
/usr/bin/java
PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Apr 29  2014 /usr/bin/java -> /etc/alternatives/java
PepperBoy@PepperBoy-Inspiron-3542:~/Desktop$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 46 Oct 17  2014 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

我的问题是:

  1. 如果这是唯一带来变化的编辑,那么为什么呢 我们编辑〜/ .bashrc。看起来我要做的就是在linux中运行which或whereis命令,它告诉我/ usr / bin / java是系统运行的实际可执行文件,然后编辑它指向我有的新java版本下载

1 个答案:

答案 0 :(得分:1)

JAVA_HOME其他想要调用Java的工具使用。如果设置了它们,它们(通常)会在JAVA_HOME下查找Java。如果不是,他们将使用$PATH上找到的任何java。如果要使用JAVA_HOME在shell中查找Java,则必须将其添加到PATH; shell搜索二进制文件的方式并不神奇,这使得它在搜索java时可以做一些特别的事情。

您可以使用:

export JAVA_HOME=/usr/lib/jvm/jre1.8.0_45

export PATH=$JAVA_HOME/bin:$PATH

此外,在Ubuntu上,如果同时可以安装多个不同版本或类型的给定软件包,您可以使用替代系统进行控制:

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press enter to keep the current choice[*], or type selection number: