如何在Snow Leopard上安装Java JDK 7

69

我的Mac目前运行的是Snow Leopard(10.6.8),我想要使用Java 7进行开发。我从Oracle网站下载了Java 7 OS X安装程序,并开始运行它。不幸的是,我立即收到了一条消息,说该安装程序仅支持OS X Lion(10.7.3)。有没有办法在我的Snow Leopard上获得Java 7?我不想为了升级Java而购买一个新的操作系统。我搜索了一些资料,但是找不到什么信息。我希望能在这里获得一些帮助。谢谢。


直到我尝试将JDK添加到IDEA IDE中,我才意识到这不起作用。 - anizzomc
我认为现在升级到Mavericks可能是免费的? - David Mann
2
@DavidMann Mavericks的成本不是问题。我和你一样。我在我的2009年MBP上安装了Mavericks(干净的安装),它像通过Capri Sun吸管一样顺畅运行。而且我没有看到任何真正的好处。我使用MBP的99%用于Java / Arduino开发和YouTube。令人荒谬的是,我们被迫要么购买另一个MBP,要么削弱我们“仍然良好”的MBP,以便我们可以运行更安全的Java版本。苹果公司和Oracle公司应该感到羞耻。 - cbmeeks
完全同意,安装一个臃肿的操作系统只是为了给女友留下印象,取代简约、快速、稳定的Snow Leopard有什么意义呢? - rupps
9个回答

42

2
嗨,我也按照你的步骤操作了,但是似乎 Maven(至少是3.0.4和3.0.5)无法工作。我确实收到“java.lang.AssertionError:未识别平台”的错误消息。我是唯一一个遇到这个问题的人吗? - fbiville
1
@Rolf,你设置了JAVA_HOME变量吗?在我的配置中,我已经为命令行参数设置了以下内容:JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home。另外,你可能会对查看以下程序/usr/libexec/java_home感兴趣。 - bric3
2
那么使用这种方法是否意味着/usr/libexec/java_home程序不会反映新安装的JDK7包?我已经在另一台(更新的)安装了OS X 10.9的Mac上安装了JDK7,在安装完软件包后,/usr/libexec/java_home指向它。但是通过Pacifist安装时情况是否不同呢? - Jeff Evans
3
我曾经在雪豹版 Mac 上安装 Java 7 时遇到了同样的问题。我使用了 Pacifist 软件,并通过 Pacifist 安装了 Java 包。然后,我通过“Java Preferences.app”重新排列了 Java 层次结构,使 Java 7 成为最优先的选择。 - Ramin
它能够运行,但是尝试启动Bukkit服务器后,不久就会因为致命的JVM错误而崩溃。 - sudo
显示剩余5条评论

24

据我所读,JDK 7不需要10.7+,因此我只需使用PackageMaker(Xcode工具)打开已发货的.pkg安装程序文件,删除操作系统版本要求并重新构建它。

您需要将安装程序从.dmg文件中复制出来,因为您需要保存更改。
编辑:您需要在另一个目录中进行构建,因为挂载的.dmg是只读的。

到目前为止,我使用这个工具还没有遇到任何问题,甚至Java首选项窗格也可以正常工作。

请注意,您必须重新排序Java Preferences.app中的JDK,以便让程序使用新的JDK而不是Java 6。


我甚至将Java 7 .jdk捆绑包复制到了/System/Library/Java/JavaVirtualMachines/,它似乎能够正常运行。

只是不要在Java应用程序运行时移动/重命名JDK捆绑包;并非我有意这样做……


我基本上成功地按照步骤进行了操作,除了在JavaNativeFoundation中找不到符号_JNFRunLoopDidStartNotification。可能是在我的Mac升级过程中出了些问题,显然_JNFRunLoopDidStartNotification是在10.6.5中添加的,而我使用的是10.6.8版本,但本地绑定没有该符号,所以我冒险使用了来自10.7.3版本的JavaNativeFoundation,现在它可以正常工作了! - avalez
1
我发现了这篇帖子,提到只要不使用AWT(即窗口应用程序),JDK 7可能运行良好。 - alexandroid
@alexandroid 嗯,我很确定我曾经在JDK 7中使用过AWT。 我一点问题都没有遇到,但是嘿,结果可能因人而异。 - Hawken
我该如何验证我已正确重建?我遵循了建议,在安装后,它要求我重新启动我的Macbook,我也这样做了。当我打开Java首选项时,我没有看到Java 1.7;从终端命令行,java-version报告1.6.0_65。还需注意:在执行此操作之前,请备份。 - mobibob
@Hawken 我无法使用以这种方式打包的JDK 7与AWT Minecraft启动器。 - Wyatt Ward
显示剩余2条评论

9

这对Groovy不起作用。我使用了这种方法安装了JDK 7,在运行groovysh时出现了错误。当我切换回JDK 6时,错误消失了。 - JBT
“临时伪造操作系统版本”比重新打包pkg文件更容易实现。 - Greg Domjan
这个答案对我有用,而其他的答案(使用Pacifist或类似工具)则没有……使用Pacifist时,虽然我可以从终端运行java7,但我无法让Eclipse或Utilities/Java Preferences识别它。 - jackkamm
这对我在10.6.8上安装JRE没有起作用。它说已经安装了,但是现在我的/Library/Java/JavaVirtualMachines/目录是空的,当我在终端中输入'java'时,它显示'无法找到要调用的Java运行时'。也不确定如何修复它... - phreakhead
@NiksaJakovljevic 我没有临时更改 SystemVersion.plist 文件的权限。我该怎么办? - Karlo

6
@reukiodo的回答绝对是正确的方法,非常感谢!但是,对于像我这样的新手来说可能需要更进一步的解释。
  1. 下载@reukiodo发布链接中的两个DMG文件。
  2. 安装Pacifist。
  3. 使用Pacifist打开Java-DMG文件。
  4. 在“Package Contents”选项卡(默认选项卡)中,选择“JDK 7 Update XX.pkg”的“Contents”(其中XX表示版本号,例如51)
  5. 单击“Install”按钮并按照屏幕上的说明进行操作。
  6. 在“通用”选项卡(默认选项卡)中,打开您的“实用程序”文件夹中的“Java Preferences.app”并将Java SE 7拖到Java版本列表的顶部。
  7. (可选:使用Eclipse:按照Heath Borders在另一个类似问题的 回答中的步骤进行操作。注意!这实际上适用于OSX 10.7 Lion,但是相同的过程适用于我在10.6.8 Snow Leopard上使用。)

2
我已经进行到第6步,但在打开Java Preferences.app的常规选项卡时找不到Java 7。我是漏掉了什么还是因为这是Java 7更新60的原因?:-/ - MTA

2
我能够编译适用于Snow Leopard的openJDK 7(包括AWT),使用了这个项目的一些补丁:
https://github.com/hgomez/obuildfactory/ 如果你想要更简单的方式,可以使用我的二进制文件:
https://bintray.com/wyatt8740/generic/openjdk7-sdk-osx-10.6/20140622/view 该tarball大小约为57兆字节。
将其解压到/Library/Java/JavaVirtualMachines/下。JDK将位于名为jdk1.7.0.jdk的目录中。将JAVA_HOME环境变量设置为/Library/Java/JavaVirtualMachines/jdk1.7.0.jdk/Contents/Home,并将设置JAVA_HOME的命令放入~/.profile中以使其更加持久化。注销并重新登录以使其完全生效。到目前为止唯一缺少的是JDK 7浏览器插件。
你也可以使用“Java偏好设置”应用程序(在Spotlight搜索中可找到)来设置它作为默认选项,通过GUI访问时也可以使用。
不幸的是,我目前无法访问OS X以尝试使Java 1.8工作,因此1.7可能是10.6的终点。

1
你介意我重新分发你的二进制文件,以便在旧版OSX中使用我的应用程序Jubler吗? - Panayotis
@Panayotis 好的!出于好奇,有多少人?(无论有多少人,答案仍然是“可以继续,没有问题” - 我只是好奇我帮了多少人!) - Wyatt Ward
@Panayotis - 顺便说一下,在你的网页上我发现我的名字拼错了。(http://www.jubler.org/osx_sl.html) - Wyatt Ward
1
哦,对不起,已经修复了!我还不知道,刚刚上传了。但是我知道有很多人拥有无法升级的旧硬件(感谢苹果)。到目前为止,我必须创建两个软件版本,但现在我只需要创建一个版本。 - Panayotis
@Panayotis 告诉我吧。我有一台2006年的Intel 64位iMac,无法超过10.7并保持图形加速。现在它运行Debian Linux(双启动与OS X 10.6,因为我不能再购买10.7了)。还有一台Powerbook G4(也运行Debian)。苹果是过时硬件之王。谢谢! - Wyatt Ward

2

有两种方法可以做到这一点。

  1. 从charlessoft.com下载Pacifist,然后在其中打开JDK PKG(并提取应用程序)。
  2. 在PackageMaker中打开PKG(一个开发者工具),并删除对10.7.3的要求。

祝你好运!


2
这个答案可以通过不(糟糕地)复制两个现有的答案来改进。 - SevenSidedDie

1

这意味着最低操作系统版本是OS X 10.7.3。你实际上是用10.6.x构建的吗? - dnc253
可能我是用10.7.x版本来构建的,大概吧。但他们说“…它应该可以在10.6.8 + Java for Mac OS X 10.6 Update 6上继续运行,但这并不保证...”试一下吧! - user381105

1

0
你想要的并不是不可能的,但肯定不推荐这样做。但是,一旦你确定这就是你想要的,下面是一个安装Java(或任何与操作系统相关的软件)的简单方法: - 导航到你的MainHD/System/Library/CoreServices/SystemVersion.plist - 备份此文件!! - 在文本编辑器中打开它并更改产品版本:
    <key>ProductUserVisibleVersion</key>
<string>10.6.8</string>
<key>ProductVersion</key>
<string>10.6.8</string>

根据您的需求。 警告: 武士在做出任何决定之前会深呼吸七次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接