简体   繁体   English

无法将 JAVA 路径更改为 Oracle JDK

[英]Unable to change the JAVA path to the Oracle JDK

I'm using RHEL8 which has default OpenJDK installed.我正在使用安装了默认 OpenJDK 的 RHEL8。 which java command points to /usr/bin/java.其中 java 命令指向 /usr/bin/java。 java -version gives openjdk version "1.8.0_252" java -version 给出 openjdk 版本“1.8.0_252”

Installed java in /u01/app/java/ location.在 /u01/app/java/ 位置安装 java。 Modified the.bashrc like below & sourced it.修改了.bashrc,如下所示并获取了它。 export JAVA_HOME=/u01/app/java/jdk1.8.0_241/ PATH="$JAVA_HOME/bin/java:$HOME/.local/bin:$HOME/bin:$PATH" export PATH导出 JAVA_HOME=/u01/app/java/jdk1.8.0_241/ PATH="$JAVA_HOME/bin/java:$HOME/.local/bin:$HOME/bin:$PATH" 导出路径

Now JAVA_HOME points to /u01/app/java/jdk1.8.0_241/ But which java or java -version still points to the OpenJDK.现在 JAVA_HOME 指向 /u01/app/java/jdk1.8.0_241/ 但是 java 或 java -version 仍然指向 OpenJDK。

  • Added the same in.bash_profile file & removed it from the.bashrc: Results are same添加了相同的 in.bash_profile 文件并将其从 .bashrc 中删除:结果相同
  • Deleted OpenJDK & made changes in.bash_profile.删除了 OpenJDK 并在 .bash_profile 中进行了更改。 But by doing so ended up with "Command not found" error.但是这样做会导致“找不到命令”错误。

How can i fix it?我该如何解决?

It was Path issue.这是路径问题。 I have given PATH="$JAVA_HOME/bin/java:$HOME/.local/bin:$HOME/bin:$PATH" for PATH.我已经为 PATH 提供了 PATH="$JAVA_HOME/bin/java:$HOME/.local/bin:$HOME/bin:$PATH" 。 which should not be the case.不应该是这样。 Modified my PATH to below.将我的 PATH 修改为以下。 It worked.有效。

PATH="$JAVA_HOME/bin:$HOME/.local/bin:$HOME/bin:$PATH" export PATH PATH="$JAVA_HOME/bin:$HOME/.local/bin:$HOME/bin:$PATH" 导出路径

That happens because when you invoke java it is actually invoked /usr/bin/java , which, issuing ls -l /usr/bin/java you will probably see is linked to the openjdk installation (probably through a double link: the first one being /usr/bin/java to /etc/alternatives/java and the second one being the link to the "real" java executable).发生这种情况是因为当您调用 java 它实际上被调用/usr/bin/java ,发出ls -l /usr/bin/java您可能会看到链接到 openjdk 安装(可能通过双链接:第一个是/usr/bin/java/etc/alternatives/java和第二个是链接到“真正的” java 可执行文件)。 For example, on my debian:例如,在我的 debian 上:

gianluca@asus-debian:~$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 mag 20  2018 /usr/bin/java -> /etc/alternatives/java
gianluca@asus-debian:~$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 nov 22  2019 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java

You can fix in two ways:您可以通过两种方式修复:

  • Dirty way, you manually update all the symbolic links in /usr/bin that lead to the unwanted java version and make them point to the desired one肮脏的方式,您手动更新 /usr/bin 中导致不需要的 java 版本的所有符号链接,并使它们指向所需的
  • Clean way, you use alternatives that does the job for you.干净的方式,您使用为您完成工作的替代品。

You can read more about alternatives for RHEL here (mid-page... "The longer version").您可以在此处阅读有关 RHEL 替代方案的更多信息(中页...“更长的版本”)。

Good link很好的链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM