java - 编辑 .bashrc 不会改变 JAVA_HOME

标签 java linux ubuntu jvm

<分区>

我想在 ubuntu 中更改为 JAVA 8。

我更改了 ~/.bashrc 和/etc/environment 中的 JAVA_HOME 并获取了它。这导致 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 可执行文件的符号链接(symbolic link)。我将其编辑为我下载的 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 版本下载

最佳答案

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:

关于java - 编辑 .bashrc 不会改变 JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832443/

相关文章:

java - 循环依赖——总是错的?

java - Java 程序在 Linux 和 Windows 之间的性能比较

linux - 保持 Redis 实例的副本同步?

linux - Diff CDF V2 文档

Bash 更新问题

java - 如何评价记录器的性能?

c - Linux C 套接字 UDP 服务器。 select() 没有收到任何信息

ubuntu - 为什么我有 debian-sys-maint 而不是 mysql root 用户?

shell - 乘以2个数组索引变量shell编程

java - 如何将文本向左移动?