Mac OS X Mavericks中的多个Java安装

pro*_*eek 13 java eclipse macos osx-mavericks

从Oracle下载了Mac OS X 10.9.1的JDK,但我不得不再次从Apple网站安装另一个Java,因为我无法用它启动eclipse.

这是我提到的两页.

现在我的计算机上安装了三个java二进制文件.

安装A.

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

安装B.

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
Run Code Online (Sandbox Code Playgroud)

安装C.

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我发现我可以轻松删除安装C,但我不确定这是否正常.

当我从命令行调用java时,它指向安装A.

java -version
java version "1.7.0_51"

ls -alF `which java`
lrwxr-xr-x  1 root  wheel  74 Jan 15 09:12 /usr/bin/java@ -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Run Code Online (Sandbox Code Playgroud)
  • 是否可以通过安全删除其中两个来为小牛使用一个JDK 1.7?

编辑

经过一些设置和测试后,我只安装了一个Java(1.6).我有安装B,现在安装C链接到安装A.

对于使用eclipse,我必须将Compiler Compliance级别设置为1.6才能使用它(来自帮助java.lang.UnsupportedClassVersionError Unsupported major.minor版本51.0).

在此输入图像描述

EDIT2

这似乎发生了什么.

  1. 安装Apple Java

    • 安装A.
    • 安装B是A的符号链接
  2. 安装Oracle Java

    • 安装C.
    • 更改了安装B
      1. 创建了一个 /System/Library/Frameworks/JavaVM.framework/Versions/A
      2. 从安装C复制的文件(不是符号链接)
      3. 创建符号链接当前版本/ A.

我试图通过删除Apple Java来安装Oracle Java,但是我遇到了安装错误,所以我想安装Oracle Java需要Apple Java.

Mar*_*szS 7

指定Eclipse的JVM

您可以在Eclipse使用指定的JDK版本eclipse.ini.这将解决启动Eclipse的问题.

-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java
Run Code Online (Sandbox Code Playgroud)

警告:之前 添加此配置-vmargs.

使用jenv掌握Java环境

使用jenv维护多个JDK版本要容易得多.

jenv相当于rbenv,但是对于Java环境.它允许在几个JDK安装(已经存在)之间轻松切换,并配置每个项目使用哪个.

Eclipse JDK


pro*_*eek 1

看来oracle JDK直接去掉就可以了。对于 eclipse,我可以从 Java Build Path -> JRE System Library -> Installed JRES -> Add ... 添加安装 A 作为默认 JRE

在此输入图像描述