OS X中的Eclipse使用不同于CLI的Java版本

当我在控制台中输入java -version时,我得到java version "1.8.0_05" 。 软链接/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK指向/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents 。 在java首选项窗口中,唯一列出的Java版本是1.8。 JAVA_HOME设置为/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

但是,当我尝试运行Eclipse.app时,我收到错误: Version 1.6.0_65 of the JVM is not suitable for this product. Version: 1.7 or greater required. Version 1.6.0_65 of the JVM is not suitable for this product. Version: 1.7 or greater required.

我相信它正在尝试使用/System/Library/Java/JavaVirtualMachines并且在该目录中唯一的版本是1.6.0.jdk

如何让eclipse使用正确版本的Java?

下载64位版本的Eclipse而不是32位版本。

原因是Eclipse包含本机机器代码(用于GUI),这就是为什么同时存在32位和64位版本的Eclipse,这显然需要相应的Java版本。 最初Apple创建了两个版本,直到Java 6,但Oracle只创建了一个64位版本(令旧版机器的所有者感到沮丧)。 所以,如果你下载一个32位版本的Eclipse,它只会运行Apple JVM,这显然太旧了(这让我感到惊讶 – 我认为Java 4仍然支持Eclipse 4.4)

我用优胜美地在我的mac中解决了这个问题:

  1. 从https://jdk8.java.net/download.html安装了MACOSX 64位JDK
  2. 在eclipse.ini里面我把这行:

    -vm /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

它对我有用!

我遇到了同样的问题,但不是让它使用版本1.8我更改了eclipse.ini文件中的设置,所以我可以运行该程序,无论它想要使用哪个版本的jvm

解:

打开计算机中Eclipse副本的目录。

您将看到一个文件名eclipse按下control键并click它以查看选项。

然后单击选项中的Show Original ,你会发现eclipse.ini文件用文本编辑器打开它并将-Dosgi.requiredJavaVersion=1.7更改为-Dosgi.requiredJavaVersion=1.6

保存文件并打开它应该立即打开的ecplise.app ,没有任何错误

尝试eclipse.ini添加到eclipse.ini

 -vm /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 

也许更新版本的eclipse也可以提供帮助(如果你的已经过时了)。

查看System Preferences – > Java 。 它应该打开Java Control Panel 。 在面板中,检查您是否有一个(或多个)JDK。

我怀疑你有很多,并且在Eclipse正在阅读其他Java Home时在你的.profile中设置JDK。

您可以通过在终端中运行它来手动更改它们

 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

要检查它是否有效,运行java -version ,您应该看到类似的内容

 java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) 

现在尝试从命令行调用Eclipse。 要将Eclipse作为App调用,只需通过Java Control Panel设置Java8即可。 这将在Eclipse启动时读取。

这就是我在Java Control Panel

在此处输入图像描述

这是我的Eclipse Luna:

在此处输入图像描述

Download the 64-bit version of Eclipse.

这解决了这个问题。 感谢大家。