从Mac中移除Java 8 JDK

304

我之前安装了JDK 8的beta版本来查看一些示例,本以为现在很容易在不同版本之间进行切换。

最近在使用IntelliJ进行Play开发,但不知何故,尽管:

  • 我已经在首选项中将编译器设置为1.6
  • 据说是通过外部构建使用SBT,但是命令行中的sbt可以工作
  • JAVA_HOME指向JDK 6。

但IntelliJ仍然使用8进行编译。

如果我打开Java Preferences页面,确实显示安装了8,但没有卸载选项,并且没有看到其他版本。

当我执行which java时,它告诉我/usr/bin/java,而我执行/usr/bin/java -version返回1.6。

请注意:稍微调整一下,你就可以在Mac OS X上使用IntelliJ和JDK7,详情请参见这里


2
为什么要使用JDK 6?它已经被EOL'd,参见http://www.oracle.com/technetwork/java/eol-135779.html。如果您不想使用beta版本(JDK 8),则应该转移到JDK 7。 - kmorris
1
JDK7在Mac上仍然很混乱。我遇到了很多问题。但是此时此刻我会选择7。(尽管,如果你不知道的话,JetBrains仍然表示他们不支持它在mac上..!) - Rob
3
也可以考虑通过 Homebrew Cask 安装 JDK,这样安装、卸载或升级都只需要运行简单的 brew 命令。 - Agoston Horvath
2
似乎使用HomebrewJenv来管理已安装的Java版本是正确的方法。请参见http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html。 - Adriano
1
我发现参考homebrew-cask java公式如何卸载jdk非常有用。jdk9 & jdk8 - Bruce Sun
显示剩余3条评论
14个回答

791

我成功卸载了mavericks中的jdk 8,按照以下步骤进行:

运行此命令只删除JDK:

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk<version>.jdk

运行以下命令以删除插件。
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist

2
唯一的问题是现在它不让我安装jdk7。我运行了安装程序,但命令行仍然显示“没有Java运行时,请求安装”...虽然它说谎了,因为它并没有请求安装。 - geoidesic
4
这很糟糕,因为这样会删除“系统偏好设置”里的“首选项面板”。只需运行第一个命令,其它命令不要执行。 - Aquarelle
1
此外,在这些步骤之后,如果已经安装了备用的Java版本,MAC会自动将其设置为默认版本。 - Ashokchakravarthi Nagarajan
13
只是为了明确,这是卸载所有Java相关的东西。如果出于某些原因您想保留其他版本的Java,请不要删除除JDK本身(第一个命令)以外的任何内容。 - mikl
1
大多数“删除Java”的指南只会删除Java插件。感谢您提供完整的答案,实际上删除了JDK。我应该注意到我需要这样做的原因是因为Scala 2.11.8与Java 9不兼容,并且在尝试在终端中运行时会崩溃。我搜索了一段时间才找到这个方法。 - awwsmm
显示剩余6条评论

125

你只需要使用这些命令

sudo rm -rf /Library/Java/*
sudo rm -rf /Library/PreferencePanes/Java*
sudo rm -rf /Library/Internet\ Plug-Ins/Java*

2
这个在我的OSX El Capitan上运行良好,谢谢 :) - PirateApp
39
用这种方式操作会删除所有的Java JDK,不仅仅是8版本的。请小心。 - Andres

16
在Mac OSX上管理Java版本非常麻烦。 我最近从我的MacBook中完全切换到使用JDK 1.7,删除了JDK 6(我还有JDK 5的痕迹-这台笔记本电脑已经更新了几次)。
以下是我切换到JDK 7的步骤:
1)从Oracle下载最新版(http://www.oracle.com/technetwork/java/javase/downloads/index.html)并安装它。
2)删除所有JDK6和JRE6文件(如果您有备份,可以在出错时恢复)。
此时,您应该看到:
% ls /Library/Java/JavaVirtualMachines/
jdk1.7.0_nn.jdk

3) 在 /Library/Java/Extensions/ 文件夹中,您需要删除所有旧的 jar 文件,即对应于其他 Java 版本的文件。如果不这样做,您将会得到关于 tools.jar 版本错误的臭名昭著的消息(请参阅 Builds failing after upgrading to Java7, Missing Tools.jar and bad class versions)。仅仅重命名 jar 文件是不够的,因为 Java 会打开该文件夹中的每个 jar 文件 - 我将它们移到了一个子目录中。在您确保其他一切都正常运行后,可以安全地删除它们。

我发现对于简单的事情,我不需要设置 JAVA_HOME。

注意: 我刚刚尝试运行 IntelliJ,它只有在您安装了苹果的 JDK 6 时才能启动(请参见 http://youtrack.jetbrains.com/issue/IDEA-93710)。Eclipse 也是如此。Netbeans 可以正常工作。


1
编辑原问题以包含有关在Mac上使IntelliJ使用JDK7的另一个SO问题的链接。 - Rob
3
在Mac上管理Java版本是个绝对的噩梦。在Ubuntu上,我能在不到5分钟内安装Oracle Java 8并管理不同的Java版本。但是,我已经花费了数小时的时间尝试在OSX上安装和运行Oracle Java 8。 - JohnMerlino

11

使用 /usr/libexec/java_home 命令;我发现在我的~/.profile中,以下的别名和函数非常有用:

alias java_ls='/usr/libexec/java_home -V 2>&1 | cut -s -d , -f 1 | cut -c 5-'
function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    java -version
}

我认为这只适用于您的 shell 环境,而不适用于双击应用程序图标时所获得的环境(例如 Intellij)。 - NBW
据我所知,OSX上的Java应用程序在其Info.plist文件中设置了自己的Java版本(或类似的内容,例如它们支持的版本范围等)。对JAVA_HOME的更改仅适用于当前终端会话,但我认为/usr/libexec/java_home可能会影响其他会话/环境。(我无法轻松验证它,因为我在我的~/.profile中强制使用java_use 1.7) - Grégory Joseph
如果您还想查看JDK是32位还是64位,可以使用类似于alias java_ls='/usr/libexec/java_home -V 2>&1 | sed "/^ \(.*\) \(.*\),/!d;/^\s*$/d;s/^ \(.*\) \(.*\), \(.*\):\(.*\)$/\2 (\3)/g"'的命令。 - ikaerom

11

我卸载了所有的 Java、JDK 和 Oracle。我在 OSX El Capitan 上运行 Java 8。

其他答案遗漏了很多东西。这个答案涵盖了更多的基础知识。

再见,垃圾软件。

sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist
sudo rm -rf /System/Library/Frameworks/JavaVM.framework
sudo rm -rf /var/db/receipts/com.oracle.jdk8u65.bom
sudo rm -rf /var/db/receipts/com.oracle.jdk8u65.plist
sudo rm -rf /var/db/receipts/com.oracle.jre.bom
sudo rm -rf /var/db/receipts/com.oracle.jre.plist
sudo rm -rf /var/root/Library/Preferences/com.oracle.javadeployment.plist
sudo rm -rf ~/Library/Preferences/com.oracle.java.JavaAppletPlugin.plist
sudo rm -rf ~/Library/Preferences/com.oracle.javadeployment.plist
sudo rm -rf ~/.oracle_jre_usage

3
没有权限删除文件"/System/Library/Frameworks/JavaVM.framework"。 - Nazariy
2
@Nazariy 其中一些可能不需要 sudo,但我还是使用了它。长话短说:再也不要安装Java了。 - Mulan
1
@Nazariy 系统完整性保护 - Cameron Lowell Palmer
2
请检查您的文件列表。/usr/bin目录下的文件是基本系统的一部分。请参阅https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html。 - Andres
3
这是有害的。不要删除/System/Library/Frameworks/JavaVM.framework,它是 macOS 的一部分,与 Oracle 的 Java 无关。 - Shchvova
显示剩余3条评论

8

刚刚又试了一遍,还是不行。最后出现了“您有更新版本(但链接已失效)”的提示。 - Rob
3
这个链接说:先输入cd '/Library/Java/JavaVirtualMachines/',然后输入sudo rm -rf YOURVERSION.jdk,即rm -rf jdk1.8.0_06.jdk - Alan Dong

4

有两种方法可以实现这一点:

  1. 直接从“用户”->“库”->“Java”->“VirtualMachines”中删除JDK,然后直接删除jdk文件夹即可卸载java。

  2. 通过以下命令:(卸载Java 1.8版本)

在编写命令之前,请使用以下命令确保您在主目录中:

cd〜/

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.jdk
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/Application\ Support/Oracle/Java

4
如果您在 Mac 上安装了 jdk8,但现在想要将其删除,只需运行以下命令:"sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk"

删除jdk文件夹后,启动台->系统偏好设置中仍然显示Java条目。 - Drew
这对我也起作用了...非常感谢,帮助解决了在Android Studio中修复Unsupported major.minor version 52.0错误的问题。 - Pradeep Chakravarti Gudipati
据我所知,首选项中的Java与JDK无关(例如,首选项是在您的计算机上加载网页的程序,而JDK是用于使用Java编译其他程序的工具),因此在首选项中拥有它实际上并不是一个问题。@Drew - DaveRGP

3

在 Mac 上卸载任何版本的 Java 只需要执行以下操作:

sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-YOUR_ACCURATE_VERSION.jdk/ 
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin 
sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane

1
如果您卸载了所有文件但仍然失败,请使用此行代码:
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk

5
这并没有添加任何内容。已经有一篇被接受的答案说了这个并且更多。 - Chris Mukherjee

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