现在Java首选项已经消失,我如何在Mountain Lion中的两个Java版本之间切换?


32

我有Mountain Lion安装了两个版本的Java:

来自Apple的更新 移除了 Java首选项 。在 另一个问题 有人想知道删除该实用程序。

我的问题不同:

  • 我怎么能在这两个版本之间切换 Java首选项 离开了?

我以前使用Apple的实用程序轻松设置Java首选项。没有那个实用程序,有一种简单快捷的方法吗?


有什么理由你无法重新安装 Java首选项
chharvey

@ TestSubject528491我该怎么做?
Maverik

我想这会对你有所帮助,我还没有在我的机器上试过它。请参阅以下链接中的步骤12和13 wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux 。你可以重复步骤在java之间切换..希望这有助于你..
Dilip Rajkumar

@DilipRajkumar它适用于linux ....
Maverik

抱歉,我错误地认为linux命令可以在Mac上运行..如果我幸运得到另一个解决方案,我建议..
Dilip Rajkumar

Answers:


12

您可能需要两种方法:

  • 一个单独切换applet插件的版本
  • 另一种在不切换applet插件版本的情况下切换JRE其他部分版本的方法。

我的 最近的用例

  • Java 8适用于不使用该插件的应用程序
  • 适用于applet插件的Java 7 Update 9。

将applet插件而不是JRE / JDK的其他部分从Java 8切换到Java 7 Update 9

  1. 退出Web浏览器以及使用Java或Java applet插件的任何其他应用程序
  2. 安装JDK 8
  3. 拨出插件
  4. 安装JRE 7 Update 9或JDK 7 Update 09。

放在一边:建议搬家

sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /private/var/tmp

如果你打算 开关 通常,您可能更喜欢不同的临时位置。

结果

sh-3.2$ java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b58)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b02, mixed mode)
sh-3.2$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.2
BuildVersion:   12C60

同时:

Screenshot of Oracle's verification of Java version in Safari

将applet插件而不是JRE / JDK的其他部分从Java 7 Update 9切换到Java 6 Update 37

答案在:


将JRE而不是applet插件从Java 8切换到Java 7 Update 9

安装JDK 7 Update 09然后安装JDK 8

  • 操作系统和应用程序将默认使用最好的版本。

退出所有使用Java的应用程序。无需退出浏览器。

抛开了 jdk1.8 ...目录来自

/Library/Java/JavaVirtualMachines

  • 操作系统和应用程序将使用Java 7 Update 9。

将JRE而不是applet插件从Java 7 Update 9切换到Java 6 Update 37

退出所有使用Java的应用程序。无需退出浏览器。

抛开了 jdk1.7 ...目录来自

/Library/Java/JavaVirtualMachines

  • 操作系统和应用程序将使用Java 6 Update 37。

macbookpro08-centrim:~ gjp22$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
macbookpro08-centrim:~ gjp22$ sudo mv /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk /private/var/tmp
Password:
macbookpro08-centrim:~ gjp22$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

通常

对于OS X的用户,Oracle提供的一些内容最初会产生误导:

… 等等。

简单

虽然以上都不像使用之前由Apple安装的Java Preferences应用程序切换那么简单,但是相对简单的方法 撇开 (不需要特殊的卸载)让人联想到拖放安装的愿望...... 以前表达过 在里面 OpenJDK的-OSX建造 区域。

有人可能想构建一个应用程序,但我不建议使用符号链接 - 它可以工作,但可能与未来的拖放安装方法不一致。

旁注

在撰写本文时,最新的 支持的版本 神谕 进行更新 公然 可得到 是(对于OS X以外的平台)Java 6 Update 37和(对于包括OS X的平台)Java 7 Update 9。

由于将提供更多版本,请相应地重新解释此答案。

此答案中的Java版本术语符合 Java帮助中心 术语。


你真的是指Java 8还是错误? :-)
Maverik

1
真的;-) ...请查看链接的问题,右栏。
Graham Perrin

4
如果您正在使用JDK8并且想要频繁切换,这里有一个提示。只需chmod 0000 JDK8目录即可将其关闭 sudo chmod 0000 /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/ 并重新打开它 sudo chmod 0755 /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/
Brett Ryan

1
@BrettRyan的最后建议对我来说很完美。我认为这是最简单的方法。
Artem

1
非常感谢@BrettRyan,这是最简单的!我建议答案的作者添加一个替代方案。我使用命令在我的主文件夹中创建了一个.sh,并创建了一个绑定到一个键的Automator,该键从一个切换到另一个。惊人!
Panthro

29

打开终端使用此命令:

/usr/libexec/java_home -v 1.6 

您可以将1.6更改为要使用的任何java版本,命令将输出该版本的Java所在的位置。 (即:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home)

那么你可以像往常一样用上一个命令的输出来设置JAVA_HOME。即:

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

所以要简化;这样的事情应该有效:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

记得检查版本:

java -version

希望能帮助到你。


4
这是我可以在网上找到的这个问题最有用的答案。谢谢!
SearchTools-Avi

1
好的,这应该是公认的答案。我已经安装了一个应用服务器的强制更新JAR,它只能在Java 6上运行。使用它,我可以切换到Java 6,运行更新程序,然后切换回来。现在我可以更新应用程序服务器以在Java 7上运行。
Adrian J. Moreno

4

看起来你必须手动完成它。 Oracle的文档仅说明了这一点 一次可以安装一个JRE

此Apple支持页面描述 如何在Apple SE 6 JRE和Oracle SE 7 JRE之间切换 。简而言之,要从Oracle的JRE切换回Apple,请启动终端应用程序并键入以下内容:

sudo mkdir -p /Library/Internet\ Plug-Ins/disabled

sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins/disabled

sudo ln -sf /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

在支持页面上有关于如何将Web Start切换回JRE 6以及如何将所有内容切换回Oracle JRE 7(重新安装JRE)的更多(和更好)指令。

不像使用Java Preferences实用程序那么简单,但总比没有好。


1
Oracle最近使用术语JRE会误导OS X的用户.JRE不仅仅是插件。
Graham Perrin

2

基于 user2343996的回答

alias java8="export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) && java -version"
alias java6="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6) && java -version"

-4

为什么需要安装2个Java版本?

Apple没有安装Java作为默认更新(我相信从Lion开始)。在Mac上检查/安装Java的最佳方法如下:

  1. 开放式终端。输入“java”(当然没有引号)
  2. 如果java不存在,您将获得以下内容:  “没有Java运行时,请求安装...”
  3. Java开始正常安装(这是开始安装的错误可执行文件)
  4. 如果你有java检查版本,在终端类型“java-version”

如果要安装不同版本的java: 只需访问oracle站点并下载最新/更旧的jdk。


我已经在问题中写了两个版本的Java。我问如何更改默认值。
Maverik

我认为它会自动切换到安装的最新版本/最新版本。在我的情况下,我最后安装了jdk 7。所以这是默认工作的那个。
SashaZd

3
我希望能够在版本之间切换。
Maverik

Apple JDK 6和Oracle JDK 7之间存在差异,这些差异可能会在编译时和运行时导致不兼容。
JohnnyO

1
一般来说,我们不会试图改变某人的前提,除非我们能够提供竞争或引人注目的替代方案,而答案根本就是否定。我们也不鼓励要求投票,所以我已经编辑了你的答案。
bmike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.