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中解决了这个问题:
- 从https://jdk8.java.net/download.html安装了MACOSX 64位JDK
- 在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.
这解决了这个问题。 感谢大家。
- Eclipse JDT:是否有重构用setter / getter方法替换直接字段访问?
- 如何通过eclipse在本地群集/模式下调试Apache Storm
- 在Eclipse中更改Web项目的Tomcat上下文路径
- 我的日食月神不会启动
- java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax / persistence / Index;
- 创建Maven项目,无法解析原型,拒绝连接
- 在eclipse中运行的maven项目的问题,未被识别为Java项目
- JDK-9不会让我使用Strings:“java.lang.String是不明确的”?
- 线程“main”中的exceptionjava.io.FileNotFoundException:错误