自从Oracle宣布Java开始收费之后,越来越多的人会考虑从[Open JDK][1]下载安装Java环境。可能自己机器上也会同时并存好几个Java版本,本文以macOS为例介绍一下如何从Open JDK安装并进行管理多版本。

下载安装

curl -O https://download.java.net/java/GA/jdk12/33/GPL/openjdk-12_osx-x64_bin.tar.gz 
tar xvf openjdk-12_osx-x64_bin.tar.gz

# 解压后文件夹比如名为jdk-12.jdk,移动到macOS管理的JVM目录中去
sudo mv jdk-12.jdk /Library/Java/JavaVirtualMachines

此时,可以输入如下命令查看本机上有几种Java版本:

/usr/libexec/java_home -V

比如生成如下内容:

Matching Java Virtual Machines (2):
    12, x86_64:	"OpenJDK 12"	/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
    1.7.0_76, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home

也可以输入小写v参数查看具体的版本信息,比如查刚刚下载的Java 12:

/usr/libexec/java_home -v 12

会显示/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home,这个就是它的Java Home。那么就能通过export设置当前的JAVA_HOME环境变量了。比如:

export JAVA_HOME=`/usr/libexec/java_home -v 12`

便捷管理多版本

Linux或者macOS都有bash或者其他shell,以bash为例,bash在每个用户目录下都有.bashrc文件用于配置用户相关的环境变量(如果没有可以自己创建),可以在该文件下面写如下代码:

# type 'java7' at command prompt to switch to java 7
function java7() {
    export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
    echo "JAVA_HOME is $JAVA_HOME"
    java -version
}

# type 'java12' at command prompt to switch to java 12
function java12() {
    export JAVA_HOME=`/usr/libexec/java_home -v 12`
    echo "JAVA_HOME is $JAVA_HOME"
    java -version
}

保存之后,输入命令source .bashrc,然后可以通过命令java12或者java7来便捷切换所使用的Java版本。

[1]:

https://openjdk.java.net/install/