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

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

作者: flashine | 来源:发表于2021-08-13 14:45 被阅读0次

    命令行切换多个版本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报错的问题

          本文链接:https://www.haomeiwen.com/subject/towdbltx.html