命令行切換多個版本JDK的解決辦法:http://www.itdecent.cn/p/af79ae7f732c
雙擊jar文件時默認是使用/System/Library/CoreServices/JavaLauncher.app打開的,然后在安裝過jdk11之后JavaLauncher.app默認會使用JDK11去打開jar文件,如果必須使用低版本的jdk打開jar文件一般情況下只能在命令行使用java -jar的形式去打開,因為命令行的java版本可以通過修改環(huán)境變量的形式來切換。
但是每次打開一個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并不會通過它執(zhí)行,也不會通過環(huán)境變量里配置的java_home來執(zhí)行,它只通過 /usr/libexec/java_home 獲取的jdk進行執(zhí)行。因為 /usr/libexec/java_home 是個二進制文件,且該文件夾的內(nèi)容由于mac系統(tǒng)設定無法進行修改,參考上面的鏈接,最后找到一個折中的辦法:
- 修改高版本JDK目錄下的
info.plist:

info.plist
- 需要切換JDK時,修改環(huán)境變量的參數(shù):
可以看到這里默認的JDK版本已經(jīng) 從11切換到1.8.301了

java_home
需要使用JDK11時:
/usr/libexec/java_home -v '!11'

image.png
以后雙擊打開jar文件就會默認使用/usr/libexec/java_home這里輸出的版本了,如果修改完后沒有生效,建議重啟一次系統(tǒng)。