【问题标题】:How do I change my Eclipse IDE's launch JVM?如何更改我的 Eclipse IDE 的启动 JVM?
【发布时间】:2018-06-29 04:56:24
【问题描述】:

我在我的 Mac 上运行 Eclipse Oxygen (1A),我可以在“安装详细信息”中看到 IDE 本身(实际启动 JVM)当前使用的 JVM 是 Oracle 的 1.8.0_131 JVM。我安装了其他一些 JVM,包括最新版本 1.8.0_161,我想切换到最新版本。

要明确一点:我并不是要设置在编译和/或启动代码时使用的执行环境为特定项目。我正在尝试更改启动 Eclipse 本身时使用的 JVM。

到目前为止,我已确保 Eclipse 知道我更新的 JRE,并且它确实是默认的“已安装 JRE”,但重新启动 Eclipse 最终会使用相同的旧 JVM (1.8.0_131)。

有没有办法告诉 Eclipse 我想使用更新的 JVM 而无需直接编辑 Eclipse 启动脚本? (我假设如果我愿意,我可以这样做,但我不想这样做。)

【问题讨论】:

标签: java eclipse macos jvm eclipse-oxygen


【解决方案1】:

你需要进入eclipse的文件夹,打开eclipse.ini并添加这一行:

-vm
C:/Program Files/Java/jdk1.7.0_7/bin/javaw.exe

用你的 java 路径改变路径

【讨论】:

  • 请注意,OP 引用了版本 1.8+ 中的 JVM。当它引用版本 1.7 的 JDK 时,您提出的解决方案如何正确?它甚至可能没有安装在这台机器上,因为它已经过时了......
  • 另外,我的 Mac 上没有 C: 驱动器;)
【解决方案2】:

reference documentation 中,我们了解有关 Eclipse 启动器可执行文件如何查找合适的 Java 安装的(基本)详细信息:

-vm(可执行,主)

当传递给 Eclipse 可执行文件时,此选项用于定位用于运行 Eclipse 的 Java VM。它应该是相应的完整文件系统路径:Java jre/bin 目录、Java 可执行文件、Java 共享库(jvm.dll 或 libjvm.so)或 Java VM 执行环境描述文件。

如果没有指定,Eclipse 可执行文件使用搜索算法来定位合适的 VM。无论如何,可执行文件然后使用 -vm 参数将路径传递给用于 Java Main 的实际 VM。然后 Java Main 将此值存储在 eclipse.vm 中。

遗憾的是,“搜索算法”的结果没有明确指定,这使得它“有点”不确定。更复杂的是:这可能是一个依赖于平台的策略。

编辑:在Eclipse Launcher 部分中,算法得到了更好的解释,提供了更多细节。

no -vm 指定时,启动器在 root 的 jre 目录 中查找虚拟机 first eclipse,然后在搜索路径

鉴于上述“jvm 搜索”过程和(相关)含义,您可以(仅)通过在eclipse.ini 中通过-vm 指定路径来获得稳定的环境。这应该指向命令/usr/libexec/java_home -v 1.8* 返回的“稳定”路径。

*注意:只需在本地通过终端检查此命令的结果。

在我的 MacOS 环境中,上面的命令会导致:

/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

正如您在下一个清单中看到的那样,我创建了一个符号链接,它指向安装在我的系统中的实际和更新的 JDK。

node:JavaVirtualMachines user$ ls -lah
total 0
drwxr-xr-x  6 root  wheel   192B 18 Jan 13:35 .
drwxr-xr-x  5 root  wheel   160B  6 Okt 14:28 ..
lrwxr-xr-x  1 root  wheel    17B 18 Jan 13:34 1.8.0.jdk -> jdk1.8.0_161.jdk/
lrwxr-xr-x  1 root  wheel    14B  3 Nov 10:42 1.9.0.jdk -> jdk-9.0.1.jdk/
drwxr-xr-x  3 root  wheel    96B  3 Nov 10:40 jdk-9.0.1.jdk
drwxr-xr-x  3 root  wheel    96B 18 Jan 13:32 jdk1.8.0_161.jdk

进一步调查您的问题,我在我的本地 Eclipse Oxygen.2 安装中发现了一个有趣的观察结果,这可能也适用于您的情况。在下面的屏幕截图中,我们看到 JRE name 在某种程度上是“静态的”并且没有更新为新版本。

通过单击已安装 JRE 列表中的“编辑...”按钮来验证您的本地情况。它实际上可能指向更新的 JRE/JDK 版本。在最好的情况下,您只需调整此条目的名称即可。

希望对你有帮助。

【讨论】:

  • 奇怪的是,我的eclipse.ini-vm /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/bin,但正在运行的Eclipse 却说它正在运行jdk1.8.0_122。似乎我很久以前就结束了,我将新 JRE 的安装目录符号链接到旧名称。
  • 我选择完全从eclipse.ini 中删除-vm 参数(和参数)(通过在# 中使用前导# 登录eclipse.ini)并且重新启动导致Eclipse 使用最新的可用JRE .我想我会保留这个配置,所以我总是能得到最新的。
  • 对我来说似乎很合理。但是请记住,如果同时在您的系统上安装 JDK8 和 9,您可能会再次遇到“麻烦”版本:环境决定了您将使用哪个 JDK。我希望我的回答有助于澄清情况并为您指明方向,即它为您提供了桌面上的选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
相关资源
最近更新 更多