我的工作主要是使用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
指令。
显然,Oracle发行的RPM脚本倾向于通过从较早的安装中删除关键的JAR文件(例如tools.jar
和)来破坏您已安装的任何以前的JDK版本rt.jar
。这使得以前运行的JDK对开发人员无用。
我的第一个响应是在运行第二个安装程序脚本之前重命名安装目录。但是这样做使RPM抱怨在运行第二个脚本时已经安装了JDK版本。因此,黑客的技巧是安装一个版本,重命名该目录,然后使用RPM“删除”该版本(即使它会抱怨无法找到与之关联的任何文件)。然后,您可以自由安装第二个版本,对每个版本重复前面的步骤,直到获得要安装的最新版本。
以下是在同一台计算机上获取多个可用的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] 删除。
我来说两句