简体   繁体   English

在 Ubuntu 中使用多个版本的 Java

[英]Using multiple versions of Java in Ubuntu

I have a Ubuntu machine where I already have one JDK version which is installed.我有一台 Ubuntu 机器,我已经安装了一个 JDK 版本。 Next I have downloaded the second version into /usr/local .接下来,我已将第二个版本下载到/usr/local

Now, I want to run a program against the second JDK which is in /usr/local , ie, I will copy a sample .java program in /usr/local/bin and then execute it.现在,我想针对/usr/local中的第二个 JDK 运行一个程序,即,我将在/usr/local/bin复制一个示例.java程序,然后执行它。

But the problem is, even If I navigate to the /usr/local/bin and type $ java -version , I am getting the one which is installed in the first place.但问题是,即使我导航到/usr/local/bin并输入$ java -version ,我也会得到首先安装的那个。 Is there any solution for this?有什么解决办法吗?

type sudo update-alternatives --config java键入sudo update-alternatives --config java

The select the version you want.选择你想要的版本。

And I think this question should be moved to askubuntu .我认为这个问题应该移到askubuntu

When you run java with no path, then your shell looks in your $PATH environment variable to find java .当您在没有路径的情况下运行java时,您的 shell 会在您的$PATH环境变量中查找java If you want a specific java , you need to either change your $PATH , or run it with a path, like:如果你想要一个特定的java ,你需要改变你的$PATH ,或者用一个路径运行它,比如:

/usr/local/bin/java

or if you really want to cd there first, you could run或者如果你真的想先在那里cd ,你可以运行

./java

from /usr/local/bin来自/usr/local/bin

Here's an approach tested on Ubuntu 20.04 which shows adjusting the javac and java defaults:这是在 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

See Switch between multiple java versions on askubuntu for a canonical thread.有关规范线程,请参阅在 askubuntu 上的多个 Java 版本之间切换

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

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