当前位置: 首页 > 知识库问答 >
问题:

编辑.bashrc不更改JAVA_HOME[重复]

董阳平
2023-03-14

我在~/.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可执行文件。我把它编辑到我下载的Java8中,现在我的java版本显示了正确的版本。

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个答案

柳奇思
2023-03-14

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:
 类似资料:
  • 我想要dockerise的遗留web应用程序使用一些旧的类,如,这些类在Java SE7之前一直受到支持。现在,在docker容器中,默认的jdk获取(在安装tomcat-6容器时)是 OpenJdk不支持这些类

  • 有没有办法更改不可编辑JTextField的样式?如果文本字段设置为editable=false,我们希望文本字段的背景颜色略为灰色。我想其中一种方法就是 在每个组件上,但这似乎容易出错且乏味。 我想要实现的是:正常的JTextfiel应该按照nimbus外观和感觉的定义显示。只读字段(例如editable=false)应具有不同的背景色。禁用字段应按照nimbus LAF的定义显示。 我在Nim

  • 在BASHRC中设置JAVA_HOME路径后,我收到以下错误: 当我执行java命令时,得到的结果是:/usr/bin/java 解决这个问题的可能办法是什么?

  • 给我的Laravel 5.1网站一个可编辑的镜头。我有一个列表的文本标题列为表行。我跟着留档。当我点击标题时,我可以看到文本字段的编辑表单弹出。我更改文本并提交。新文本显示,弹出窗口按预期消失。但是数据库没有更新。我确保将data-url设置为我需要的后期操作。确保为它添加路线。确保在我的控制器中有一个方法来处理请求、更新数据库和重定向(不确定重定向是否必要)。这是一个单行的片段,为了简单起见,我

  • 我正试图在一个需要过滤非数字字符和点的编辑文本上实现一个过滤器。我可以使用编辑文本或输入类型的数字标签,但似乎设备之间有轻微的差异,就像有些设备即使在编辑文本中过滤它们也显示点字符。 下面是afterTextChanged方法 这是输出结果 如您所见,在我删除第一个“h”后,当我输入另一个h时,字符串变为“66hh”,其中它应该是“66h”,因为我已经删除了第一个h。什么原因会阻止我对可编辑的更改

  • 我试着在谷歌上搜索,找了一段时间,但没有找到任何解释如何做好这件事的地方 变量是firstname、lastname、social security number和weekly salary。