(如果我的格式不正确,请提前道歉,这是我的第一篇文章,请随时纠正我)。
通常,当我想要找出我正在使用的 Java 版本时,我会运行:
java -version
Java 版本“1.7.0_55”
如果我想更改 Java 版本(从 Java 7 到 Java 6),我只需将符号链接(/usr/bin/java)指向相应的 JRE Java 二进制文件即可。(顺便说一下,在本例中,我们不需要担心 javac 编译器或 java_ws)。
# readlink -f /usr/bin/java
/usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
# ln -s /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java /usr/bin/java
# java -version
Java 版本“1.6.0_31”
这很好,而且据我所知,它是有效的。
在 Solaris 中,有一个很好的方法可以通过 pkg mediator 工具来实现这一点:
myHost# pkg mediator -H java
java系统1.7系统
要将 Java 从 1.7 更改为 1.6:
pkg set-mediator -V 1.6 java
然后确认更改
myHost# pkg mediator -H java
java本地1.6系统
我想知道是否apt
有等效方法?或者是否有更优雅的方法来切换 Java 版本?
编辑:这也可能适用于 python,所以我不是在寻找特定于 java 的答案
答案1
在已安装软件的多个版本之间切换的正确方法是使用:
sudo update-alternatives --config <package>
因此,对于 java,您需要执行:
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-7-oracle/jre/bin/java 1053 auto mode
1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 manual mode
2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1053 manual mode
为了在版本之间切换,您可以输入 ie selection
0、1、2(在本例中),具体取决于您想要切换到的版本。
但是,对于 python,python2 和 python3 不是替代方案,因此您将找不到此选项,您需要为其创建别名。
因此,如果您希望 python 指的是 python 版本 2.xx,而 python3 指的是 python 版本 3.xx,则可以打开文件~/.bash_aliases
并输入以下内容:
alias python=`/usr/bin/python`
alias python3=`/usr/bin/python3`
如果您之前没有创建过别名,那么此文件可能为空,这没关系。您甚至可能希望将别名反过来,即 python 引用 python3,python2 引用 python2,您可以根据需要调整别名。
如您所见,这取决于安装的版本是否是彼此的替代品 - 如果是替代品,则可以使用update-alternatives
,如果不是,则必须使用别名或软链接进行调整。 可能有更好、更干净的解决方案,但我不知道。