本文主要介绍jdk11在macOS上的安装和环境变量的配置。

1、JDK11安装

1)下载JDK11

Oracle JDK11: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
OpenJDK11: http://jdk.java.net/11/
在上面两个地址下载需要的版本。
本文主要是macOS上安装,文件下载地址:https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_osx-x64_bin.tar.gz

wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_osx-x64_bin.tar.gz

2)解压安装包(系统中默认安装位置:/Library/Java/JavaVirtualMachines/

sudo tar -zxf  openjdk-11.0.1_osx-x64_bin.tar.gz -C /Library/Java/JavaVirtualMachines/

3)验证是否安装成功

levideMacBook-Pro:articles levizhong$ java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

2、JDK多个版本之间切换

安装成功Jdk11后,可能之前还有之前版本的JDK。下面看一下多版本JDK切换问题

1)查看所有JDK的在系统中默认的安装位置

/usr/libexec/java_home  -V
Matching Java Virtual Machines (2):
    11.0.1, x86_64: "OpenJDK 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
    9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

2)查看指定版本JDK在系统中默认安装位置

/usr/libexec/java_home -v 9
/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home

3)手动切换JDK版本

通过修改 ~/.bash_profile文件修改JAVA_HOME,如果没有这个文件则需要新建一个。alias是自定义命令别名

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
#默认是Java 11

执行下面命令,让文件生效

source ~/.bash_profile

切换JDK版本就执行对应命令别名,比如,我要切换成JDK9,就执行一下java9就可以了。

3、用JEnv来切换JDK版本

1)安装JEnv

 brew install jenv

2)配置JEnv环境变量

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile \
&&echo 'eval "$(jenv init -)"' >> ~/.bash_profile \
&&source ~/.bash_profile

报这个错(ln: /Users/levizhong/.jenv/versions/oracle64-9.0.1: No such file or directoryln: /Users/levizhong/.jenv/versions/openjdk64-11.0.1: No such file or directory),就是没有配置JEnv环境变量

3)查看JEnv管理所有的JDK版本

jenv versions

例如,

levideMacBook-Pro:cjavapy levizhong$ jenv versions
* system (set by /Users/levizhong/.jenv/version)
  11.0
  11.0.1
  9.0
  9.0.1
  openjdk64-11.0.1
  oracle64-9.0.1

4)切换成想要使用的JDK版

jenv global 11.0

更多Jenv命令请看jenv相关文档:JEnv docs

5)其它类似工具

SDKMAN:有点不同,可以处理安装和切换不同的JDK版本。但会将已安装的JDK放入其自己的目录中,这通常是~/.sdkman/candidates/java。SDKMAN允许设置全局默认版本以及特定于当前shell的版本。使用文档:https://sdkman.io/usage

Jabba:可以安装和切换不同版本JDK。Jabba也是将已安装的JDK放入其自己的目录中,这通常是~/.jabba/jdk,使用文档:https://github.com/shyiko/jabba#usage