Mac-Osx

你可以在 Mac 上降級 Java 嗎?

  • August 4, 2009

我正在為我們的 IT 團隊測試 Snow Leopard,為它的實際發布做準備。我目前正在執行 Java JDK 1.6 附帶的種子 10A394。

我發現一個 Java 桌面應用程序不再在 Snow Leopard 下執行,該應用程序甚至無法啟動。供應商建議我降級到 JDK 1.5。

問題是我能夠找到的每個 Java for Mac 包首先檢查它是否將安裝在 Apple 在創建包時考慮的 Mac OS 版本上。 這個頁面就是一個很好的例子,有兩個不同的包,但每個包在安裝前都會明確檢查 MacOS 10.4 或 10.5,所以它們都不能在 Snow Leopard 上執行。

一旦我安裝了它,我就知道如何更改順序,以便首選較低的版本——我只是找不到任何可以安裝的包。

MacOS 附帶的 Java 版本可以追溯到 1.3。見/System/Library/Frameworks/JavaVM.framework/Versions。唯一需要從包安裝的情況是最新的 Java 比您的作業系統版本更新,並且由於某種原因您不能使用軟體更新。

您的應用程序的供應商應該真正承擔責任,但您可以通過編輯應用程序的 .plist 來解決問題。右鍵點擊應用程序並選擇顯示包內容Info.plist,然後使用文本編輯器打開文件。您將Java在該文件中看到一個字典和一個 key JVMVersion。將值更改為1.5*(1.4+ 表示 1.4 之後的任何版本,1.6* 表示 1.6 的任何版本。)這將使您的應用程序在 Java 1.5 中執行。

然而,這可能不是全部。在旁邊Info.plist,你會發現MacOS/JavaApplicationStub。這是啟動 JVM 的實際 MacOS X 二進製文件。開發人員可能在他們的應用程序中附帶了與您的作業系統不兼容的舊版本文件。您將在您的機器上擁有此文件的最新副本,位於/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/JavaApplicationStub. 用這個替換應用程序的版本。

該應用程序可能仍然無法執行,因為(例如)它在以 64 位啟動後無法載入 32 位本機庫。在這種情況下,您可以使用 lipo 命令去除 Stub 的 64 位部分:lipo -remove x86_64 JavaApplicationStub -output JavaApplicationStub

希望這有效。如果確實如此,請務必讓應用程序的開發人員知道。

引用自:https://serverfault.com/questions/36508