如何使用适用于 Mac 的 Oracle 新 1.7 JDK 运行 Eclipse?

Posted

技术标签:

【中文标题】如何使用适用于 Mac 的 Oracle 新 1.7 JDK 运行 Eclipse?【英文标题】:How do I run Eclipse using Oracle's new 1.7 JDK for the Mac? 【发布时间】:2012-05-08 07:47:34 【问题描述】:

我正在尝试让new 1.7 JDK 与 Eclipse 一起使用(这是 Oracle 的官方版本)。

我的意思不是仅仅将 Eclipse 指向它以便您可以在项目中使用它,这工作正常,但实际上使 Eclipse 使用 1.7 JVM 运行。

我已将新的 JVM 移到 Java Preferences 列表的顶部,但 Eclipse 仍然从 1.6 开始。如果我在 Java 首选项中禁用 1.6,我会在双击 Eclipse 后立即看到一个对话框,提示“无法创建 Java 虚拟机”。

编辑: 我在 eclipse.ini 中添加了以下内容,就在 -vmargs 之前:

-vm
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/bin/java

但在 Eclipse 安装详细信息对话框中我仍然看到:

java.runtime.version=1.6.0_31-b04-415-11M3646

edit 2:这里是我的 eclipse.ini 文件的内容:https://gist.github.com/2512578

【问题讨论】:

这是实际 java 可执行文件的路径还是目录?它必须链接到实际的可执行文件才能工作。另外,您使用的是什么版本的 Eclipse? 这是实际的可执行文件。我正在使用 Indigo Service Release 2 Build id:20120216-1857 你能发布你的 eclipse.ini 文件的全部内容吗? 这很奇怪。如果指定了 -vm 参数,我相信它应该会否决 Eclipse 将使用的任何其他 JVM。 eclipse目录下的jre目录下是否安装了JVM?可能出于某种原因,您使用的特定版本的 Eclipse 将选择 JVM,而不是 eclipse.ini 中指定的那个。如果这没有任何结果,我会查看您的路径中指向的 JVM,并确定这是否是 Eclipse 正在使用的那个。显然,更改系统的默认 JRE 并不是最佳解决方案,但可能值得研究。 事实证明,Eclipse Launcher 的规范明确忽略了 mac 上的 -vm 参数。请参阅:help.eclipse.org/helios/… 在底部它说:“MacOSX:启动器使用系统 JavaVM 框架,并将始终使用 JNI 调用 API 在进程中加载​​ vm。” 【参考方案1】:

还有另一种方法。请在 .ini 文件的 -vmargs 前添加以下两行:

-vm 
YOUR_JAVA_7_HOME/jre/lib/server/libjvm.dylib

(记住这些需要是单独的行)并在“Info.plist”文件中添加相应的条目(在“Eclipse”键下添加或修改数组项 - 每个字符串子元素对应一个命令行参数)。

...
<key>Eclipse</key>
<array>
<string>-vm</string>
<string>/MY_VM_HOME/jre/lib/server/libjvm.dylib</string>
...
</array>

从终端运行 eclipse 时,或者只使用-vm YOUR_JAVA_7_HOME/lib/server/libjvm.dylib 命令行参数。

【讨论】:

这对我有用(eclipse 3.7.1),我不知道为什么它没有被标记为好答案。 我确认这对我的 Eclipse Indigo 安装有效(在 eclipse.ini 和 plist.info 中)!谢谢。 在 Mavericks 上尝试这个并失败了。 (1) 使用 /usr/libexec/java_home 来确定 JAVA_7_HOME。它给了/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home。有一个 lib 子目录,但没有 lib/server 子目录。 (2)我发现“在'plist.info'文件中添加相应的条目”有点稀疏。对我来说最接近的等价物是 Contents 目录中的 Info.plist(大写),但不确定要添加什么。 感谢 cmets。 @1 该示例基于 JRE。您能否相应地更新指向 libjvm.dylib 的 JDK 的路径? @2 是的,它是“Info.plist”,我现在更正了它并添加了需要完成的示例更改。再次感谢。:) 对于 Kepler 和 JRE 1.7 的 JVM 共享库“/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/server/libjvm.dylib”不包含JNI_CreateJavaVM 符号。【参考方案2】:

我刚刚向https://bugs.eclipse.org/bugs/show_bug.cgi?id=339788 添加了关于无法在 OS X 上将新的 Oracle JDK 与 Eclipse 一起使用的评论。在 eclipse.ini 中使用 -vm 选项不起作用。我发现解决此问题的唯一方法是使用以下 shell 脚本:

#!/bin/sh
#
export JAVA_HOME=/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
LAUNCHER_JAR=/Applications/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar

java \
-showversion \
-XX:MaxPermSize=256m \
-Xms1024m \
-Xmx1024m \
-Xdock:icon=/Applications/eclipse/Eclipse.app/Contents/Resources/Eclipse.icns \
-XstartOnFirstThread \
-Dorg.eclipse.swt.internal.carbon.smallFonts \
-Dosgi.requiredJavaVersion=1.5 \
-jar $LAUNCHER_JAR

使用http://mathiasbynens.be/notes/shell-script-mac-apps 上的步骤,我将上面的脚本变成了一个可以保留在我的dock 上的应用程序。

【讨论】:

另外,这很有趣:bugs.eclipse.org/bugs/show_bug.cgi?id=374792#c3 问题出在 Eclipse 3.7 的启动器二进制文件中。对于 Eclipse 3.7.2,即文件 plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.101.v20120109-1504/eclipse_1408.so 来自 Eclipse 4.x 的相应 eclipse*.so 可以处理适用于 Mac OS X 的新 Java 7 版本。现在这是一个可怕的 hack,但如果你真的需要使用 3.7 .x 目标平台,您可以简单地将较新的eclipse*.so 从 Eclipse 4.3 设置复制到您的产品中。但是,您确实需要保留原始文件名,因此对于 Eclipse 3.7,仍然必须使用上述插件名称和 eclipse_1408.so 对我不起作用,就像提到的其他 3 个解决方案一样。真的,让 Eclipse 在 OSX Mavericks 上工作就这么难吗?甚至在它发布后将近半年?我在这里开始了一个新线程:***.com/questions/22725267/… @Kay - 感谢您的破解,已验证,这正是问题所在,只需替换该库即可【参考方案3】:

显然有一个针对 Kepler 的修复程序,应该会在下一个服务版本中发布。

同时,此错误中提到了一种解决方法,它允许您在不安装 Apple 的 JRE 1.6 的情况下运行 eclipse:https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361#c20

这将允许您从 finder 或聚光灯而不是 Dock 启动 Eclipse。

我刚刚在 OS X Mavericks 上对此进行了测试,它在更新期间丢失了 jre 6,并在您尝试启动 Eclipse 时要求安装它。我当然安装了最新的 Oracle JDK 1.7。

拒绝这样做,然后解决这个问题,编辑 /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Info.plist 中的 jvm 功能

<key>JVMCapabilities</key>
            <array>
                    <string>CommandLine</string>
                    <string>JNI</string>
                    <string>BundledApp</string>
                    <string>WebStart</string>
                    <string>Applets</string> 
            </array>

使用此修复程序,您无需在 eclipse.ini 中指定 vm。

【讨论】:

这给了我一个“无法创建 java 虚拟机”。附言我已安装并运行 JDK 1.7.0_45 这对我来说很好用,而且似乎比更改 Eclipse 发行版文件更整洁。但是,它确实需要您重新启动 Mac。 啊,这太棒了。在谷歌搜索并尝试了至少 20 种不同的东西之后,这是唯一有效的解决方案。太感谢了。如果有人也在苦苦挣扎,那就跑小牛队。请注意(如上所述)需要重新启动。 我遇到了类似的问题,可以通过这种方式解决,但我也发现在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/System/Library/Java/Support/Deploy.bundle 添加空文件夹会导致OS X 未经修改就使用Oracle JDK。【参考方案4】:

在上面的 Mac 上似乎不起作用。对我来说,使用 Eclipse KEPLER 它可以添加

-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/

在我的 eclipse.ini 结尾(没有那个换行符)

这终于改变了我的 Eclipse Installation Details > Configuration from

-vm /System/Library/Frameworks/JavaVM.framework

-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib

这对于我的 Eclipse INDIGO 安装工作。

【讨论】:

【参考方案5】:

安装Oracle JRE和JDK后,打开Eclipse.app里面的Info.plist(右键,显示内容),粘贴到“Eclipse”后面 "-vm/System/Library/Frameworks/JavaVM.framework/JavaVM"

我的看起来像这样:

    <key>Eclipse</key>
    <array>
        <string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/JavaVM</string>
        <string>-keyring</string><string>~/.eclipse_keyring</string>
        <string>-showlocation</string>
    </array>

如果这样做,升级 JRE 后就不必更新文件了。

【讨论】:

这是唯一对我有用的解决方案,但我确实尝试了很多其他步骤。如果您遇到问题,我建议您确保安装了最新版本的 Eclipse 和 JDK,然后尝试此答案。在安装 JDK 7 之前,我已经通过标准 OS 提示安装了 Java 6,不确定这是否有帮助或伤害。【参考方案6】:

只需编辑

Eclipse.app/Contents/Info.plist

您必须使用特定的 Java 版本(而不是平台的默认版本)取消注释以下选项之一:

<string>-vm</string>
<string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java</string>

这帮助我从 1.7.0 回滚到 1.6.0。

【讨论】:

【参考方案7】:

检查您的 java_home 在 /usr/libexec/java_home 中是否正确;

不要更改您的 eclipse.ini 并编辑 Info.plist 文件并更改/添加此行 -vm/Library/Java/JavaVirtualMachines/'jdk-version-your'/目录/Home/bin/java 并保存。打开 Eclipse 就完成了!

对我来说效果很好,并且可以使用 javafx e(fx)clipse!

PS:在 Mac OS X 系统上,您可以通过在 Finder 中右键单击(或 Ctrl+单击)Eclipse 可执行文件找到 Info.plist,选择 Show Package Contents,然后在 Contents 文件夹中找到 Info.plist .

【讨论】:

【参考方案8】:

假设您使用的是支持 Java 7 的 Eclipse 版本(我相信任何 3.7 及更高版本),您应该能够在 eclipse.ini 文件中指定 Eclipse 使用的 JVM。如果你打开它,你应该会看到一个“-vm”属性,后面跟着你当前使用的 JVM 的目录。您应该能够将此目录更改为您的 1.7 安装。

注意:我没有在 Mac 上使用过 Eclipse,所以配置文件的名称可能不同。

【讨论】:

eclipse.ini 的格式非常特殊,在 Mac OS X 中查找它有点棘手。见wiki.eclipse.org/Eclipse.ini 感谢您提供的出色链接。我不知道 eclipse.ini 中选项的具体顺序。【参考方案9】:

截至 2012 年 4 月 28 日,这是 Eclipse 3.7 SR2 启动器应用程序中的一个已知未解决错误。

见https://bugs.eclipse.org/bugs/show_bug.cgi?id=339788

【讨论】:

截至 2012 年 7 月 3 日,它被标记为 bug 374791 的副本,它被标记为 RESOLVED FIXED,但在 Eclipse 4.2 上仍然对我不起作用【参考方案10】:

我刚遇到这个问题。我通过降级和下载 JDK 7 来修复它。

【讨论】:

【参考方案11】:

下载并安装 Titanium 后,我遇到了类似的问题。我的 eclipse 工作了,但 Titanium 没有,所以我最终查看了配置文件,看看有什么不同

Eclipse 有

eclipse.p2.profile=epp.package.standard

钛有

eclipse.p2.profile=profile

更改以上内容以匹配 eclipse 配置后,我能够启动 Titanium

【讨论】:

【参考方案12】:

点击几下就解决了我的问题。 转到 Eclipse - &gt; Preference - &gt; Java - &gt; Installed JRE - &gt; Add button - &gt; Standard VM 并将 JRE Home 路径引用到 /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home 并添加自定义名称。给定 JRE 路径后,将自动添加所需的 Jar 文件,然后单击完成。请确保 jdk 已经安装。

【讨论】:

此修复仅导致从 Eclipse 中运行的应用程序使用指定的 JVM。它对用于运行 Eclipse 本身的 JVM 没有影响。【参考方案13】:

对我来说,https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361#c25 中提出的修复方法有效:

#!/bin/bash

# Workaround for https://bugs.eclipse.org/411361
# "[Mac] Kepler doesn't launch without JRE 6, even if JDK 7 is installed"
#
# Put this launch.command into the same folder as Eclipse.app.
#
# If necessary, adapt JAVA_EXECUTABLE to the full path to your Java executable:

JAVA_EXECUTABLE=java

cd "$(dirname "$0")"

$JAVA_EXECUTABLE \
-Djava.library.path="$(echo plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_*/eclipse_*.so)" \
-Xms512m \
-Xmx2048m \
-Xdock:icon=Eclipse.app/Contents/Resources/Eclipse.icns \
-XstartOnFirstThread \
-Dorg.eclipse.swt.internal.carbon.smallFonts \
-XX:MaxPermSize=256m \
-jar "$(echo plugins/org.eclipse.equinox.launcher_*.jar)"  \
-os macosx \
-ws cocoa \
-arch x86_64 \
-showsplash \
-name Eclipse \
--launcher.appendVmargs \
-debug \
-showlocation \
-consolelog

【讨论】:

【参考方案14】:

默认情况下,您的 MacOSX 带有不适合 Eclipse 的 JRE 1.6.0。要解决此问题,您还需要安装已包含 JRE 1.7.0 的 JDK 7。

这是您可以下载的链接。

只需选择Java SE Development Kit 7u79下的MacOS X版本并安装即可。

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装此包后,Eclipse 无需任何修改即可启动。

【讨论】:

以上是关于如何使用适用于 Mac 的 Oracle 新 1.7 JDK 运行 Eclipse?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 新命令不再适用于 MAC

markdown 安装Oracle PHP扩展(oracle OCI8) - 适用于Mac OS 10.12.6的即时客户端 - 自制环境 - 在PHP 7.2上

2018.4.15 Mac系统下如何使用StartUml (同样适用于windows)

适用于 Oracle 数据库的 SSDT 等效项

如何在 mac 中安装适用于 ios 的 Cordova 摄像头插件

如何使用适用于 macOS 的 Visual Studio 代码为外部 Mac 应用商店签署和公证电子应用程序构建?