我正在为我们的 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 中更改偏好顺序。
安装您需要的版本并将其设置为最优先的版本。