mac上安装java双版本的问题

在安装了java8后,想把java7也安装上,但会出现错误,我把java7安装在了/Library/InternetPlug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin,然后添加进PATH中,但java命令还是显示java8,使用whereis java显示java的路径在usr/bin中,请问java8是如何被引用到usr/bin目录中的,还有path中同时存在usr/bin和/Library/InternetPlug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin,那为何还会执行java8啊?

阅读 3.1k
2 个回答

Java 程序需要知道java命令的路径

Mac OS X可以使用/usr/libexec/java_home来定位$JAVA_HOME。在老版本的Mac OS中使用/Library/Java/Home补全$JAVA_HOME。这个工具的原理是扫描bin目录下所以类似java的命令。

➜ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_121, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
    1.7.0_80, x86_64:    "Java SE 7"    /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    
切换到1.7
➜ export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
java -version
切换到1.8
➜ export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
java -version

PATH变量中先出现的路径优先级高,先被搜索,所以如何同时存在usr/bin和/Library/InternetPlug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin,而且/usr/bin在前且/usr/bin这个路径下有相应的执行程序(比如java)的话就执行而不会再去搜索后面的/Library/InternetPlug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题