【问题标题】:Using multiple versions of Java in Ubuntu在 Ubuntu 中使用多个版本的 Java
【发布时间】:2014-08-13 10:12:25
【问题描述】:

我有一台 Ubuntu 机器,我已经安装了一个 JDK 版本。 接下来我已经将第二个版本下载到/usr/local

现在,我想针对/usr/local 中的第二个JDK 运行一个程序,即,我将在/usr/local/bin 中复制一个示例.java 程序然后执行它。

但问题是,即使我导航到/usr/local/bin 并输入$ java -version,我也得到了首先安装的那个。有什么解决办法吗?

【问题讨论】:

标签: java ubuntu ubuntu-12.04


【解决方案1】:

这是在 Ubuntu 20.04 上测试的一种方法,它显示了调整 javacjava 默认值:

$ sudo apt install openjdk-14-jdk
$ sudo apt install openjdk-8-jdk
$ java -version
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 14.0.2+12-Ubuntu-120.04, mixed mode, sharing)
$ javac -version
javac 14.0.2
$ update-java-alternatives --list
java-1.14.0-openjdk-amd64      1411       /usr/lib/jvm/java-1.14.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
$ 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-14-openjdk-amd64/bin/java      1411      auto mode
  1            /usr/lib/jvm/java-14-openjdk-amd64/bin/java      1411      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
$ sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                          Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-14-openjdk-amd64/bin/javac   1411      auto mode
  1            /usr/lib/jvm/java-14-openjdk-amd64/bin/javac   1411      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in manual mode
$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
$ javac -version
javac 1.8.0_275

有关规范线程,请参阅 askubuntu 上的 Switch between multiple java versions

【讨论】:

    【解决方案2】:

    输入sudo update-alternatives --config java

    选择你想要的版本。

    而且我认为这个问题应该移到askubuntu

    【讨论】:

    • 不,第二个java没有安装,就是这里的问题。我只有一个包含 bin 和其他内容的 zip 文件,我已将其提取到 /usr/local/java
    • 下面的答案应该会有所帮助
    • “下方”表示“其他地方”,例如有时“上方”,具体取决于投票、编辑历史记录和用户偏好。
    【解决方案3】:

    当您在没有路径的情况下运行java 时,您的shell 会在您的$PATH 环境变量中查找java。 如果您想要特定的java,则需要更改您的$PATH,或使用路径运行它,例如:

    /usr/local/bin/java

    或者如果你真的想先在那里cd,你可以运行

    ./java

    来自/usr/local/bin

    【讨论】:

    • 但是如何编译,例如:cd 到 /usr/local/java/bin 后,执行 $javac sample.java 会编译解压出来的 java 还是安装好的 java 版本?因为当我 cd /usr/local/java/bin 并且如果我输入 $java -version 我仍然会得到之前安装的版本
    • cd 不会更改 shell 查找程序的位置(. 位于 $PATH 中时除外)。您需要在我的回答中使用完整或相对路径,或者更改您的 PATH 环境变量以包含您想要 javajavac (或任何其他可执行文件)的目录 first被发现。
    猜你喜欢
    • 2019-04-04
    • 2011-12-27
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多