前几日,最新一届的 WWDC 大会为我们带来了 EL Capitan 这个10.11的最新的 osx 系统,我自然在第一时间就装上了开发者预览版。原因无他啊,就是论坛里网友们说 bug 非常少啊。遥想当年,从10.9升级到10.10的时候,即使到了公测阶段,依然是 bug 满天飞呀!
但这次确实 bug 少之又少,即使找到的一些也不伤大雅,真是叫人惊讶!
不过,这些 bug 里边恐怕有一个是让人不得不重视的,那就是暂时不支持 Java SE 6了,这样直接就导致所有使用 Java 的程序都不能够运行,坑啊!
“This application requires the legacy Java SE 6 runtime which is unavailable for this version of OS X.”
好在有大神给出了解决办法,既然不支持古老的 Java SE 6,那我们何不直接安装最新版本的 Java SE 8?
准备工作
首先,你需要去官网下载最新版本的 JDK(为什么是 JDK 而不是 JRE?因为 JRE 的修改方法更麻烦一些……与其如此,还不如一步到位。)然后安装之。
验证版本
打开终端,然后使用如下命令来查看,如果你的结果和我这里的差不多,那说明已经安装好了。
1 2 3 4 |
╰─➤ java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) |
修改配置文件
请注意看目录,没有 System!
不是 System 里的 Library!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
找到如下路径的文件,修改之。(需要管理员权限) sudo vim /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Info.plist //找到如下字段 <key>JVMCapabilities</key> <array> <string>CommandLine</string> </array> //修改成这样: <key>JVMCapabilities</key> <array> <string>CommandLine</string> <string>JNI</string> <string>BundledApp</string> </array> |
创建链接
由于 EL Capitan 有一个新的叫做“RootLess”功能,所以我们只能够一级一级的创建目录,按照如下目录依次进入,如果不存在则创建:
1 2 3 4 |
cd /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home sudo mkdir bundle cd bundle sudo mkdir Libraries |
然后使用如下命令来创建链接(这是一条命令)
1 |
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bundle/Libraries/libserver.dylib |
创建两个空目录
按照上边的方法,我们还需要一级一级的创建两个空目录:
1 2 3 4 5 6 7 8 9 10 11 |
/Library/Java/JavaVirtualMachines/1.6.0.jdk /Library/Java/Support/Deploy.bundle //为了绕过那个苦逼的 rootless,一级一级的创建才行,懒得关闭了。 cd /Library/Java/JavaVirtualMachines sudo mkdir 1.6.0.jdk cd .. sudo mkdir Support cd Support sudo mkdir Deploy.bundle |
你的实际操作环境很可能跟我的例子不一样,但是大同小异,注意变通即可。
😰丢人啦,原来我自己写的时候顺手就写上了 System 这个目录!原来是我的错,我道歉,现在已经改正!
重启系统
这时候,你还需要最后一步,由于10.11 这时候的重启会变成关机,我们使用命令行来重启,虽然会卡住一下,但却是能够重启……
1 |
sudo shutdown -r now |
优化 App
做完以上工作,很有可能你还是悲剧的发现你的Java 程序无法启动,不要慌张,可能是因为程序不支持最新版本 Java 导致,我们需要手动来让它支持:
在你的应用程序上点击鼠标右键——或者按住 control 点击之,选择“显示包内容”,在 Content 目录下有个 Info.plist 文件
1 |
完整的路径应该是这样的:/Applications/你的Java程序.app/Contents/Info.plist |
1 2 3 4 5 6 7 8 9 10 11 |
编辑这个文件,在里边找到这句话: <key>JVMVersion</key> <string>1.*</string> 做如下修改: <key>JVMVersion</key> <string>1.8*</string> |
保存之……你可能需要管理员权限,如果不行,就拖出来修改再覆盖回去……总之,编辑之后你的 Java 程序就 ok 啦
本文由 落格博客 原创撰写:落格博客 » OSX 10.11 EI Capitan 运行 Java SE 8
转载请保留出处和原文链接:https://www.logcg.com/archives/1027.html
Apple已经发布JavaForOSX2015-001.dmg: https://support.apple.com/kb/DL1572?locale=en_US
下载安装即可解决OS X EI Capitan打开App提示this Application requires the legacy Java SE 6 runtime的问题。
是的,这样也可以解决问题。不过我已经安装了java8,就不往回盖了,但这个确实更方便解决问题~
在创建 1.6.0.jdk 以及 Deploy.bundle 的步骤时,遇到个问题,在 /System/Library/Java/ 路径下只有 Extensions 和 Support 两个目录,没有 JavaVirtualMachine 目录。通过 sudo mkdir JavaVirtualMachine 命令创建时提示 mkdir: JavaVirtualMachines: Operation not permitted 的错误。不知道是个什么情况。
你走错路了,请出门左转~
没有 system,你进错了目录当然没有权限了!
你文章里有/System/这一级目录哦
原来是真的!我后边竟然真的有个目录写错了!怪不多那么多人会疑惑。。。。。我有罪……已改正。请鞭挞我吧!
我就是随便看看