如何在我的计算机上同时安装多个版本的Java JDK?

乔纳森·兰德鲁姆(Jonathan Landrum)

背景

我的工作主要是使用Java和Scala进行的,但是许多遗留代码尚未更新为最新的JDK。因此,我们必须在开发机器上安装JDK版本5、6、7和8。直到最近,我一直在使用Arch Linux,但是我只是切换到OpenSuse Tumbleweed。我用于安装JDK版本的方法是从Oracle网站下载RPM安装程序脚本,然后从1.5开始安装它们,直到1.8为止,以使/usr/java/latest符号链接已经指向正确的版本。

问题

重新安装上述JDK版本后,我尝试指向IntelliJ IDEA中的这些安装。但是它抱怨错误“所选目录不是JDK的有效主目录”。我在网上找到了很多有关此问题和类似问题的资源,但是对于我而言,这些解决方案均无济于事。此外,/usr/bin各种Java可执行文件的符号链接都指向大量/etc/alternatives指令。

乔纳森·兰德鲁姆(Jonathan Landrum)

解决方案

显然,Oracle发行的RPM脚本倾向于通过从较早的安装中删除关键的JAR文件(例如tools.jar和)来破坏您已安装的任何以前的JDK版本rt.jar这使得以前运行的JDK对开发人员无用。

我的第一个响应是在运行第二个安装程序脚本之前重命名安装目录。但是这样做使RPM抱怨在运行第二个脚本时已经安装了JDK版本。因此,黑客的技巧是安装一个版本,重命名该目录,然后使用RPM“删除”该版本(即使它会抱怨无法找到与之关联的任何文件)。然后,您可以自由安装第二个版本,对每个版本重复前面的步骤,直到获得要安装的最新版本。

TL; DR

以下是在同一台计算机上获取多个可用的JDK版本的步骤:

1.使用安装程序脚本安装JDK的第一个版本:

:~# chmod a+x jdk-1_5_0_22-linux-amd64-rpm.bin
:~# ./jdk-1_5_0_22-linux-amd64-rpm.bin -x
:~# rpm -ivh --replacepkgs jdk-1_5_0_22-linux-amd64.rpm

2.重命名安装目录:

:~# mv /usr/java/jdk1.5.0_22 /usr/java/jdk1.5.0_22-bak

3.使用RPM卸载该版本的JDK:

:~# rpm -e jdk-2000:1.5.0_22-fcs.x86_64

4.冲洗并重复直到安装了所有版本

5.-bak从目录名称的末尾删除

:~# mv /usr/java/jdk1.5.0_22-bak /usr/java/jdk1.5.0_22

6.将/usr/java符号链接更改为正确的目标:

:~# ls -la /usr/java
default -> java7
java5 -> jdk1.5.0_22
java6 -> jdk1.6.0_45
java7 -> jdk1.7.0_80
java8 -> jdk1.8.0_101
jdk1.5.0_22
jdk1.6.0_45
jdk1.7.0_80
jdk1.8.0_101
latest -> java8

7.将/usr/bin符号链接更改为正确的目标:

:~# ls -la /usr/bin/ja*
jar -> /usr/java/default/bin/jar
java -> /usr/java/default/bin/java
javac -> /usr/java/default/bin/javac
javadoc -> /usr/java/default/bin/javadoc
javah -> /usr/java/default/bin/javah
javaws -> /usr/java/default/bin/javaws

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CentOS 7:如何在无法连接到Internet的计算机上安装open-jdk?(使用yum install命令)

来自分类Dev

Java JDK的64位版本是否可以在运行32位版本的Ubuntu的64位计算机上使用?

来自分类Dev

如何在我的计算机上找到TensorFlow的版本?

来自分类Dev

如何在具有其他Java版本的计算机上安装Java 8

来自分类Dev

R包中的Checker函数,用于查找客户端计算机中安装的JDK的版本

来自分类Dev

在用于 netbeans 8.2 的计算机上找不到 JDK

来自分类Dev

指定在安装多个jdk的同时使用

来自分类Dev

如何在局域网中同时在多台计算机上安装Ubuntu OS

来自分类Dev

如何在不同的计算机上同时播放视频

来自分类Dev

如何在一台计算机上运行多个Ubuntu版本?

来自分类Dev

如何在同一台计算机上使用多个版本的Laravel?

来自分类Dev

Android Studio中计算机之间的JDK配置差异

来自分类Dev

如何在计算机上更改节点版本

来自分类Dev

如何在本地计算机上安装的多个 WCF 服务之间共享属性?

来自分类Dev

JBoss6无法在装有JDK 7的Windows(32位)计算机上启动

来自分类Dev

Gradle JVM 版本与 JDK

来自分类Dev

如何在计算机上安装Ubuntu TV?

来自分类Dev

如何在无头计算机上安装Ubuntu?

来自分类Dev

如何在Big Sur上更改我的JDK版本?

来自分类Dev

我如何在Pentium 4计算机上安装Ubuntu 64位?

来自分类Dev

我如何在计算机上安装Windows和Ubuntu?

来自分类Dev

如何知道我的机器上的JDK版本?

来自分类Dev

如何让 maven 识别我的 jdk 版本?

来自分类Dev

在JDK下安装rxtx

来自分类Dev

无法安装JDK 7

来自分类Dev

安装JDK时出错

来自分类Dev

在JDK下安装rxtx

来自分类Dev

CentOS-安装JDK

来自分类Dev

在Linux上安装JDK

Related 相关文章

热门标签

归档