当前位置: 首页 > 面试题库 >

Mac OS X Mavericks中的多个Java安装

朱鹏
2023-03-14
问题内容

我从Oracle下载了适用于Mac OS X 10.9.1的JDK,但由于无法启动Eclipse,因此不得不再次从Apple站点安装另一个Java。

这是我引用的两页。

*在OS X 10.9(Mavericks)上安装Java
*http://support.apple.com/kb/DL1572?viewlocale=zh_CN

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

我发现可以轻松删除Installation 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用于Mavericks吗?

编辑

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

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

在此处输入图片说明

编辑2
这似乎发生了什么。

  1. 安装Apple Java

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

    安装C

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

我尝试仅通过删除Apple Java来安装Oracle Java,但是却出现安装错误,因此我猜想需要安装Apple Java来安装Oracle Java。


问题答案:

指定Eclipse的JVM您可以在Eclipse使用指定的JDK版 本在eclipse.ini。这将解决启动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
在Eclipse中设置JDK



 类似资料:
  • 问题内容: 我从Oracle下载了适用于Mac OS X 10.9.1的JDK,但由于无法启动Eclipse,因此不得不再次从Apple站点安装另一个Java。 这是我引用的两页。 现在,我的计算机上安装了三个Java二进制文件。 安装A 安装B 安装C 我发现可以轻松删除Installation C,但是不确定是否可以。 当我从命令行调用Java时,它指向安装A。 编辑 经过一些设置和测试后,我

  • 问题内容: (在回答之前,请至少阅读以下内容:这是一个临时措施!不,我们不想设置本地存储库管理器并手动运行脚本) 我们有一个带有一些依赖项的遗留项目,我们具有包含源代码和javadoc的本地副本,并且已被证明可以在生产环境中很好地工作,但是在Central中无法以相同的质量使用。我们想使用我们已经拥有的罐子。 我发现我可以手动运行一个适当的复杂mvn install:install-file命令来

  • 问题内容: 鉴于以下多态: 我们如何在没有昂贵的getInstance()方法同步和双重检查锁定争议的情况下使它保持线程安全和懒惰?这里提到了单例的有效方法,但似乎并没有扩展到多例。 问题答案: 使用Java 8,它甚至可以更简单:

  • 我找到了关于线程安全的代码,但它没有来自给出示例的人的任何解释。我想知道为什么如果我不在“count”之前设置“synchronized”变量,那么count值将是非原子的(总是=200是期望的结果)。谢谢

  • (在回答之前请至少阅读以下内容:这是临时措施!不,我们不想设置本地存储库管理器并手动运行脚本) 我们有一个带有一些依赖项的遗留项目,我们有一个包括源代码和javadoc的本地副本,并被证明在生产中运行良好,但在Central中没有相同质量的项目。我们想用我们已经有的那些罐子。

  • 问题内容: 我从两个不同的来源使用了一些JSON,最后得到两个s,我想将它们组合为一个。 数据: 使用http://json.org/java/库的代码: 因此,在这种情况下,我想将和组合在一起,以制作一个全新的产品或彼此结合。除了将它们拉开并分别加s 之外,还有其他想法吗? 问题答案: 如果要使用两个键Object1和Object2创建新对象,则可以执行以下操作: 如果要合并它们,例如顶级对象有