在Mac OS X Mavericks中安装多个Java版本

14

我从Oracle下载了适用于Mac OS X 10.9.1的JDK,但由于无法通过它启动eclipse,我又不得不从苹果网站安装另一个Java。

这是我参考的两个页面:

现在我的计算机上安装了三个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)

安装 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)

安装 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)

我发现我可以轻松地删除安装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
  • 有没有安全地删除两个JDK 1.7,并仅使用一个JDK 1.7的方法?

编辑

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

为了使用eclipse,我必须将编译器兼容性级别设置为1.6才能使用它(来自帮助java.lang.UnsupportedClassVersionError Unsupported major.minor version 51.0)。

输入图像描述

编辑2

这似乎是发生的事情。

  1. 安装Apple Java

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

    • 安装C
    • 更改安装B
      1. 创建/System/Library/Frameworks/JavaVM.framework/Versions/A
      2. 从安装C复制文件(非符号链接)
      3. 创建一个名为Current的符号链接到Versions/A

我尝试仅通过删除Apple Java来安装Oracle Java,但是我收到了安装错误,所以我想需要Apple Java来安装Oracle Java。


请查看此页面以告知Eclipse使用哪个Java jdk。对于您的其他问题,我没有任何建议。 - watery
你从未提到过什么是最初的Java问题?两个不同组织的下载安装方式不同我并不感到惊讶,只是第三个没有解释。 - nitind
2个回答

8

指定 Eclipse 使用的 JVM

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

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

警告:请在-vmargs之前添加此配置。

使用jenv掌握Java环境

使用jenv可以更轻松地管理多个JDK版本。

jenv类似于rbenv,但是用于Java环境。 它允许轻松切换多个已安装的JDK版本,并为每个项目配置要使用的JDK版本。

Eclipse JDK


我不是Mac用户,但你能否详细解释一下为什么使用jenv来管理开发JDK比使用Eclipse内置的工具来管理开发和目标JDK/JRE更好?另外,我注意到OP说他无法在当前系统状态下启动Eclipse,这与本组讨论无关。 - Pedantic
1
@Pedantic 这个问题是:是否有一种安全的方法可以仅使用一个JDK 1.7来运行Mavericks,而将其他两个删除? :) 我建议您使用正确的JVM来运行eclipse。 - MariuszS
想为各种原因购买一台Mac,其中之一是用于Web应用程序开发。我之所以参与讨论,只是为了记录历史。 - Pedantic

1
似乎Oracle JDK可以直接删除。对于Eclipse,我可以通过Java Build Path->JRE System Library->Installed JRES->Add ...将Installation A添加为默认JRE。

enter image description here


你不能使用JRE进行开发,你需要使用JDK。 - watery

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