仅限Java 7的Mountain Lion


39

我执行了Mountain Lion的全新安装并安装了JDK7。

java -version在“终端”中java version "1.7.0_05"正确返回后,仍然使用Java Preferences和其他Java程序(例如Eclipse)会提示您安装Java SE 6。

我可以使用Java 7从命令行完美地启动Eclipse。

有没有办法无需安装Java 6就可以使它正常工作?


1
这真是一团糟。到底为什么这还不能解决?安全性增强不是Apple放弃对Java更新过程的控制的主要动机吗?为什么OSX仍然提示我安装过时的Java?kes!
gentmatt 2013年

@gentmatt Java 7不是Java 6的简单更新-它更像是更改OS。SOme会使用较大的版本来破坏,并且两个主要版本都已更新以修复安全问题
2013年

@gentmatt苹果不再需要Java并基本上放弃了它。甲骨文选择了接球。
托尔比约恩Ravn的安徒生

1
鉴于Java 6已被弃用,仍然很愚蠢……
Donal Fellows 2013年

Answers:


27

JDK 7将安装在/Library/Java/JavaVirtualMachines/1.7.0.jdk下,而JDK 6将安装在/ System / Library / Java / JavaVirtualMachines下。

要欺骗OS X接受Java 7而不是建议安装Java 6,只需一个简单的符号链接即可:

sudo mkdir /System/Library/Java/JavaVirtualMachines
sudo ln -s /Library/Java/JavaVirtualMachines/1.7.0.jdk /System/Library/Java/JavaVirtualMachines/1.6.0.jdk

大多数Java程序都可以通过这种小技巧运行,而无需安装Java6。OS X的Java偏好设置(可能还有其他一些)不会启动,因为它似乎在启动JVM时会明确检查其版本。


1
第二行不应包含“ su”,而应为“ sudo ln -s .....”
David Morales 2012年

3
我刚刚进行了全新的安装,包括JDK 7u9,并将其安装到/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk;否则说明可以正常工作。
杰弗里·怀斯曼

3
当心做符号链接...苹果最近发布了1.6安全更新。如果从Apple应用此更新,则符号链接似乎使该更新无效,并将1.6更新安装到符号链接指向的位置,即Oracle 1.7。

如果Java程序需要Java 6而不是Java 7,这可能会破坏事情,当您使用其他版本时,它可能会崩溃。
user151019 2013年

这里是一个更好的解决方案,如果你是小牛:stackoverflow.com/questions/19563766/...
jedesah

4

注意:如果您确实需要Java6且不能与Java7一起使用,那么您可能希望推迟安装Java7。原因是尝试将6和7都保留在同一个macintosh上可能有些棘手,因为7 pkg会破坏一些apple-6-java项目,如下所述。因此,在推出该产品之前,我将寻找一些有关在同一Mac上保留6和7的分步说明。另请参见http://reviews.cnet.com/8301-13727_7-57533880-263/ java-preferences-missing-after-latest-os-x-java-update /于2012年10月18日。

详细信息jre-7u9-macosx-x64.dmg中的预安装shell脚本在没有警告的情况下仅删除了Apple pref窗格(以及插件),如下所示。

#!/bin/bash
PLUGIN_BASEDIR=/Library/Internet\ Plug-Ins
PLUGIN_NAME=${PLUGIN_BASEDIR}/JavaAppletPlugin.plugin
MKDIR=`which mkdir`
RM=/bin/rm
# Remove the symlink before installation forcing ystem Preferences.app to refresh its cache
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
# Actually removes the symlink
if [[ -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]]; then
     ${RM} -rf "${PREF_PANE_DEST}/${PREF_PANE_NAME}"
fi
# Create the /Library/Internet Plug-Ins if not present
if [[ ! -d "${PLUGIN_BASEDIR}" ]]; then
     ${MKDIR} -p "${PLUGIN_BASEDIR}"
fi
# If Apple's plugin is present, then delete it
if [[ -h "${PLUGIN_NAME}" ]] && [[ -d "${PLUGIN_NAME}" ]]; then
    ${RM} -rf "${PLUGIN_NAME}"
fi

===并且安装后脚本设置了符号链接===

#!/bin/bash
LN=`which ln`
CHOWN=`which chown`
PLUGIN_FILEPATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
PREF_PANE_NAME=JavaControlPanel.prefpane
PREF_PANE_SRC=/Library/Internet\ Plug-       Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy/JavaControlPanel.prefpane
PREF_PANE_DEST=/Library/PreferencePanes/
if [ ! -h "${PREF_PANE_DEST}/${PREF_PANE_NAME}" ]; then
    ${LN} -s "${PREF_PANE_SRC}" "${PREF_PANE_DEST}"
fi
${CHOWN} -R root:wheel "${PLUGIN_FILEPATH}"

-2

单独使用Java 7的Mountain Lion

您在正确的道路上…… 

无需安装Java 6

…如问题所述,提示安装。

所以我的简短回答是,您可以单独拥有Java 7。但并非没有安装Java 6。

尝试:

  1. 允许苹果公司安装Java
  2. 从下面的两个目录中删除不再需要的Java版本:

    /图书馆/ Java / JavaVirtualMachines

    /系统/库/ Java / JavaVirtualMachines

(对于这种情况,我认为您可以放心地忽略通常的建议,以免干扰/System物品。)


2
将Java 7安装在/ Library / Java / JavaVirtualMachines下,而将Java 6安装在/ System / Library / Java / JavaVirtualMachines下。从/ System / Library / Java / JavaVirtualMachines中删除1.6.0.jdk将导致再次弹出安装对话框。似乎有效的方法是将1.6.0.jdk(在/ System / ...下)链接到1.7.0.jdk(在/ Library / ...下)。不检查Java版本的Java程序运行良好(启动Java首选项块似乎可以检查是否已安装Java 5或6)
Nicolas

很酷–您想添加自己的答案吗?请拒绝我的投票-我不会冒犯-这个问题的猜测显然是不正确的,拒绝投票将帮助其他用户不要对Java相关问题做出类似的错误猜测。
格雷厄姆·佩林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.