如何使用适用于 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 文件并更改/添加此行
对我来说效果很好,并且可以使用 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 - > Preference - > Java - > Installed JRE - > Add button - > 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?的主要内容,如果未能解决你的问题,请参考以下文章
markdown 安装Oracle PHP扩展(oracle OCI8) - 适用于Mac OS 10.12.6的即时客户端 - 自制环境 - 在PHP 7.2上
2018.4.15 Mac系统下如何使用StartUml (同样适用于windows)