关于安装多个JDK后mac默认双击打开jar报错的问题

命令行切换多个版本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系统设定无法进行修改,参考上面的链接,最后找到一个折中的办法:

  1. 修改高版本JDK目录下的info.plist
info.plist
  1. 需要切换JDK时,修改环境变量的参数:
    可以看到这里默认的JDK版本已经 从11切换到1.8.301了
java_home

需要使用JDK11时:

/usr/libexec/java_home -v '!11'
image.png

以后双击打开jar文件就会默认使用/usr/libexec/java_home这里输出的版本了,如果修改完后没有生效,建议重启一次系统。

你可能感兴趣的:(关于安装多个JDK后mac默认双击打开jar报错的问题)