前幾日,最新一屆的 WWDC 大會為我們帶來了 EL Capitan 這個10.11的最新的 osx 系統,我自然在第一時間就裝上了開發者預覽版。原因無他啊,就是論壇裡網友們說 bug 非常少啊。遙想當年,從10.9升級到10.10的時候,即使到了公測階段,依然是 bug 滿天飛呀!
但這次確實 bug 少之又少,即使找到的一些也不傷大雅,真是叫人驚訝!
不過,這些 bug 裡邊恐怕有一個是讓人不得不重視的,那就是暫時不支持 Java SE 6了,這樣直接就導致所有使用 Java 的程序都不能夠運行,坑啊!
“此應用程序需要遺留Java SE 6 運行時這是這個版本的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 導致,我們需要手動來讓它支持:
在你的應用程序上點擊鼠標右鍵——或者按住 控制 點擊之,選擇“顯示包內容“,在 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/這一級目錄哦
原來是真的!我後邊竟然真的有個目錄寫錯了!怪不多那麼多人會疑惑。。。。。我有罪……已改正。請鞭撻我吧!
我就是隨便看看