命令行切换多个版本JDK的解决办法:https://www.jianshu.com/p/af79ae7f732c
双击jar文件时默认是使用/System/Library/CoreServices/JavaLauncher.app
打开的,然后在安装过jdk11之后JavaLauncher.app
默认会使用JDK11去打开jar文件,如果必须使用低版本的jdk打开jar文件一般情况下只能在命令行使用java -jar
的形式去打开,因为命令行的java版本可以通过修改环境变量的形式来切换。
但是每次打开一个jar文件都需要开启一个shell很麻烦,搜了好久终于在Stack Overflow上找到一个解决办法了。
https://stackoverflow.com/questions/17885494/how-can-i-change-mac-oss-default-java-vm-returned-from-usr-libexec-java-home
可以看到这里默认的java_home是使用的jdk11:
java_home每次安装完新的JDK之后,
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
会自动替换上次安装JDK时的jre,但是JavaLauncher.app并不会通过它执行,也不会通过环境变量里配置的java_home来执行,它只通过 /usr/libexec/java_home
获取的jdk进行执行。因为 /usr/libexec/java_home
是个二进制文件,且该文件夹的内容由于mac系统设定无法进行修改,参考上面的链接,最后找到一个折中的办法:
- 修改高版本JDK目录下的
info.plist
:
- 需要切换JDK时,修改环境变量的参数:
可以看到这里默认的JDK版本已经 从11切换到1.8.301了
需要使用JDK11时:
/usr/libexec/java_home -v '!11'
image.png
以后双击打开jar文件就会默认使用/usr/libexec/java_home
这里输出的版本了。
网友评论