mac下默认的JDK1.8通过如下方法获得1
2
3
4
5
6/usr/libexec/java_home -V
Matching Java Virtual Machines (1):
1.8.0_172, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
当你将Oracle JDK11(例如jdk-11.0.5)或其他其他JDK放入文件夹/Library/Java/JavaVirtualMachines/jdk11xxx后,,这是java_home的输出是这样的:1
2
3
4
5
6
7/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
11.0.5, x86_64: "Java SE 11.0.5" /Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home
1.8.0_172, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home
系统默认使用最高版本的JDK:1
2
3
4java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
有时候我们希望默认使用低版本的JDK,而是在某个工程中使用高版本的JDK,这时候要怎么办,
将JDK 11 Home路径下的Info.plist改名为info.plist.disabled,然后java_home显示JDK 11不被找到,并全局使用JDK 1.81
2
3
4
5
6/usr/libexec/jenv -V
Matching Java Virtual Machines (2):
1.8.0_172, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
再此之后,我们该怎么使用JDK11呢,需要不停的修改不同版本的JDK的info.plist文件,这样会很麻烦。
一个简洁的办法是通过jenv管理本地的JDK版本。
jenv可以控制全局、文件夹、shell会话的JDK版本。通过brew可以安装jenv:brew install jenv
全局设置: jenv global xxx
文件夹设置:jenv local xxx
shell会话设置:jenv sh-shell xxx
显示当前使用的版本: jenv version
显示所有系统jdk版本:jenv versions
然后按照https://www.jenv.be/ 下介绍的步骤修改zsh或者bash的rc文件,这里以zsh为例:1
2echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
然后通过jenv add 来将JDK的版本到jenv中:1
2
3
4
5
6
7
8
9
10
11
12jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home
jenv versions
system (set by /Users/james/.jenv/version)
1.8
1.8.0.172
11.0
11.0.5
oracle64-1.8.0.172
oracle64-11.0.5
如果某个工程需要使用不同版本的JDK,例如全局为JDK1.8,而某个工程使用JDK 11,那么在该工程文件夹下:
1 | jenv local 11.0 |
如果该工程是maven工程还需要(很重要):1
jenv enalbe-plugin maven