你能在 Mac 上降级 Java 吗?

你能在 Mac 上降级 Java 吗?

我正在为我们的 IT 团队测试 Snow Leopard,为它的实际发布做准备。我目前正在运行种子 10A394,它附带 Java JDK 1.6。

我发现一个 Java 桌面应用程序不再在 Snow Leopard 下运行,该应用程序甚至无法启动。供应商建议我降级到 JDK 1.5。

问题在于,我所能找到的每个 Java for Mac 软件包都会首先检查它是否要安装在 Apple 在创建该软件包时所考虑的 Mac OS 版本上。 这一页就是一个很好的例子,有两个不同的包,但每个包在安装之前都会明确检查 MacOS 10.4 或 10.5,因此都无法在 Snow Leopard 上运行。

一旦我安装好它,我就会知道如何改变顺序,以便优先使用较低的版本——我只是找不到任何可以安装的软件包。

答案1

MacOS 附带的 Java 版本最早可追溯到 1.3。请参阅/System/Library/Frameworks/JavaVM.framework/Versions。只有在最新的 Java 比您的操作系统版本新,并且由于某种原因您无法使用软件更新时,您才需要从软件包中安装。

你的应用程序供应商确实应该承担责任,但你可以通过编辑应用程序的 .plist 来解决问题。右键单击应用程序并选择显示包装内容Info.plist然后用文本编辑器打开该文件。您将Java在该文件中看到一个字典和一个键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

希望这个方法可行。如果可行,请务必告知应用程序开发人员。

答案2

如果您安装了多个版本的 Java,您可以在应用程序/实用程序/Java 中更改偏好顺序。

安装您需要的版本并将其设置为最优先的版本。

答案3

相关内容