OSX 中JAVA_HOME设定
一、软件环境
OSX EI Capitan 10.11.6
二、指定Java运行环境
1. Global 指定应用程序的JDK/JRE
参考文章:https://support.apple.com/en-us/HT202643
在苹果官方支持中,弄了好久终于搞明白了,Application启动的时候是加载的那个Java了,位置如下:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
① 删除不想用的Java Plugin
sudo mkdir -p /Library/Internet\ Plug-Ins/disabled
sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins/disabled
只是移动到禁用目录,并没有真正删除,随时可以恢复。将新安的备份到另一个目录,或者重命名。恢复命令:
sudo mv /Library/Internet\ Plug-Ins/disabled/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins
② 重新设定Java Plugin
下载Oracle官网的JDK7或者JDK8,安装之后,就会在重新生成一个
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
注意:如果已经安装了8,没有执行①的话,是不会覆盖掉JDK8的
③ 启用JDK6.
sudo ln -sf /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
# 重新启动Java SE 6 Web Start,输入下面的命令
sudo ln -sf /System/Library/Frameworks/JavaVM.framework/Commands/javaws /usr/bin/javaws
注:OSX EI Capitan 10.11.6,已经没有了。
2. Eclipse指定vm
在windows下和许多教程下,都是说改/Applications/Eclipse.app/Contents/Eclipse/eclipse.ini文件中,加入 -vm参数,然并卵,根本没起作用,不是插入到最后,还有可能报错。
在OSX下,需要修改/Applications/Eclipse.app/Contents/Info.list文件,打开文件你会看到
<key>Eclipse</key>
<array>
<!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
or add a VM found via $/usr/libexec/java_home -V
<string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home/bin/java</string>
-->
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java</string>
<string>-keyring</string>
<string>~/.eclipse_keyring</string>
<string>-showlocation</string>
</array>
看注释部分,写的很清楚,如何配置-vm参数,这样Eclipse就可以按照自己指定的jdk运行了,而忽略系统默认的jdk。
3. VisualVM
同样是“显示包内容”,找到文件:
/Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf,
搜索visualvm_jdkhome,放开注释,路径根据命令显示结果设定
visualvm_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home"
三、查看JDK路径
查看所有版本(大V):
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.0_101, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
查看指定版本(小V):
$ /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
四、指定命令行中的jdk版本
$ vim .bash_profile
#指定默认版本
export JAVA_HOME=`/usr/libexec/java_home`
export JAVA_HOME=$(/usr/libexec/java_home)
#指定自定义版本
export JAVA_HOME=`/usr/libexec/java_home -d 64 -v 1.7`
export JAVA_HOME=$(/usr/libexec/java_home -d 64 -v 1.7)
setjdk() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
}
setjdk()可以不加,加上之后,修改更方面,在命令行输入,可以很方便的切换Java版本
setjdk 1.8