无法在macOS Big Sur上运行Eclipse

42

我无法在macOS Big Sur开发者测试版上运行eclipse,出现错误信息“Failed to create the java virtual machine”。有没有解决这个问题的方法?

错误图片

我正在运行的java版本: 在图片中显示了我正在运行的Java版本


1
你是否已经安装了JVM?使用的是哪个版本的Eclipse?/usr/libexec/java_home返回什么? - nitind
1
它返回jdk 8,而我正在使用最新的可用eclipse。 - Aayush Agarwal
2
“最新的Eclipse可用”不如版本号可靠。您能否仅通过终端运行java命令? - nitind
2
你所说的“无法”,是什么意思?你能分享一下具体的错误信息吗? - Nico Haase
1
Big Sur目前处于测试版阶段,并不涉及编程问题。您可以将该问题转移到https://apple.stackexchange.com/。 - kometen
显示剩余2条评论
20个回答

71

我遇到了相同的问题。我通过打开 /Applications/Eclipse.app/Contents/Info.plist 并添加以下内容来解决它:

<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin/java</string>

内部

<key>Eclipse</key>
        <array>
            ADD HERE!
        </array>

当然,“/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin/java”这个值必须根据您正在使用的JDK版本替换为实际路径。


1
那是在 <key>Eclipse</key> 下的 <array> 条目中吗?标准文件中有关于这个的注释吗?更详细地说明应该把它放在哪里会更有用。 - greg-449
1
是的。您应该将<string>值替换为您自己的JAVA_HOME。 - bytesgo
1
我的路径是 /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin/java 我已经尝试了,但不起作用。是的,我已将其放入 Eclipse 关键字数组中。 - Lim Thye Chean
4
我的版本是"jdk1.8.0_171.jdk"。所以我添加了以下这行代码<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin/java</string>,这样就可以正常工作了。谢谢。 - Arun

20

简述

使用以下命令导出JAVA_HOME变量:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

长版

这个答案是关于BigSur v11.0.1 Beta的。我探索的是,如果您已经配置了您的.bash_profile JAVA_HOME的导出,类似于以下内容

export JAVA_HOME=$(/usr/libexec/java_home)

那么它在尝试导入这个,因为某种原因

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

而不是

/Library/Java/JavaVirtualMachines/**/Contents/Home

为了快速解决问题,我按照以下方式配置了我的JAVA_HOME

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

如果您需要同时切换多个JVM,则可能会发现这个.bashrc/.zshrc配置很方便

    export JAVA_8_HOME="jdk1.8.0_231.jdk"
    export JAVA_11_HOME="openjdk-11.0.2.jdk"
    export JAVA_13_HOME="jdk-13.0.1.jdk"
    
        
    alias java8='export JAVA_HOME="/Library/Java/JavaVirtualMachines/$JAVA_8_HOME/Contents/Home"'
    alias java11='export JAVA_HOME="/Library/Java/JavaVirtualMachines/$JAVA_11_HOME/Contents/Home"'
    alias java13='export JAVA_HOME="/Library/Java/JavaVirtualMachines/$JAVA_13_HOME/Contents/Home"'
    
    # default to Java 8
    java8

1
/usr/libexec/java_home没有像以前一样指向正确的JDK,这是一个错误吗? - civic.LiLister
1
这应该是被接受的答案,只需简短说明:您应该通过运行“java -version”来检查已安装的Java版本,并相应更新导出路径。在我的情况下,我将“jdk1.8.0_231.jdk”更换为“jdk1.8.0_202.jdk”。 - Franco
我不认为这会解决 Eclipse / STS 的问题。这对所有命令和在 shell 中运行的命令行都有效。 - jediwompa

12

编辑 Info.plist 文件来设置 -vm 值。

  1. 安装最新版本的 Eclipse,我正在使用 2020-06 版本。
  2. 右键单击 Eclipse.app。
  3. 显示包内容。
  4. 用文本编辑器打开 Info.plist 文件。
  5. Eclipse 键下的 下添加 -vm/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java。注意-根据您所拥有的 Java 版本进行路径编辑。您可以通过运行 /usr/libexec/java_home -V 来查看列表。

输入图像描述


1
它帮助解决了问题。步骤非常详细,谢谢。 - MagicWorld
这是正确的答案。对于我来说,我必须添加<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/bin/java</string>。甚至在*.plist文件中有一个例子。 - jediwompa

6
为了解决这个问题,我删除了openJDK虚拟机并重新安装了它。
1. 删除`/Library/Java/JavaVirtualMachines`文件夹中的openJDK文件夹。 2. 从这里重新安装openJDK。 3. 打开应用程序,右键单击spring suite并选择“显示包内容”。 4. 编辑文件`Contents/info.plist`,添加以下内容。
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin/java</string>

这应该在Eclipse Key中的数组标记内部。

在此输入图片描述


3
我使用Homebrew解决了这个问题。
使用以下命令安装Eclipse Java: brew cask install eclipse-java

3

我也遇到了同样的问题,后来发现当我运行echo $JAVA_HOME时,目录已经被替换了。

重新向java home文件进行导出似乎起到了作用, 我使用了:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/

看起来解决了问题,注意你的目录可能不同,我建议通过使用“/”然后按tab键来跟踪目录以找到正确的目录。


2

在这里输入图片描述

我使用的是旧版本的IDE,但它已经无法使用了。我已经添加了JAVA_HOME变量、ini和eclipse的列表,但仍然无法工作。我还注意到虚拟机也无法启动任何虚拟机。

-vm /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/bin/java


1
除了上面推荐的所有步骤,我还需要创建以下符号链接:
    cd /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/lib
    sudo ln -s ../jre/lib/server/libjvm.dylib libserver.dylib

我使用的 Eclipse 版本是 4.4.1。(因为经过测试可以很好地与 WebObjects 兼容)

1
我是一名有用的助手,可以为您翻译文本。

我在使用Eclipse Mat和JDK Mission Control时遇到了这个问题。在Mac OS v11.6(Big Sur)上,依赖项是Java 11。在whatever.app/Contents/Info.plist中添加了以下内容。

<key>Eclipse</key>
<array>
     <string>-vm</string
      <string>/Users/<yourHomeDir>/.sdkman/candidates/java/11.0.2-open/bin/java</string>
      <string>-keyring</string>
      <string>~/.eclipse_keyring</string>
</array>

1

确认过了,将以下内容添加到Infolplist中即可。我使用的是Oracle jdk 8,并且更新了以下值。 -vm /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/bin/java


你能解释一下 infoIplist 是什么意思吗? - Timo
我错过了阅读这个,你解决了吗?关于infoplist,请参考@Michael Peterson的上面回复。https://dev59.com/b1IG5IYBdhLWcg3w2VXM#63267200 - Gurvinder

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