如何在 MacOS 中更改 CurrentJDK 符号 link

How change CurrentJDK symbolic link in MacOS

目前在我的 Mac 我有这些 JAVA 版本:


我的Mac$ cd /Library/Java/JavaVirtualMachines

$ ls -la

共 0

drwxr-xr-x 4 root wheel 136 17 Oct 11:21 .

drwxrwxr-x 5 root wheel 170 17 Oct 11:21 ..

drwxr-xr-x 3 根轮 102 7 月 14 日 22:52 1.6.0.jdk

drwxr-xr-x 3 root wheel 102 17 Oct 11:16 jdk1.7.0_79.jdk


我想做的是将符号 link 更改为指向 JDK 7 而不是 JDK 6:


$cd /System/Library/Frameworks/JavaVM.framework/Versions

$ls -la

drwxr-xr-x 11 根轮 374 10 月 17 日 11:21 .

drwxr-xr-x 10 根轮 340 10 月 17 日 11:21 ..

lrwxr-xr-x 1 根轮 10 17 Oct 11:21 1.4 -> 当前JDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.4.2 -> 当前JDK

lrwxr-xr-x 1 根轮 10 17 Oct 11:21 1.5 -> 当前JDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.5.0 -> 当前JDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.6 -> 当前JDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.6.0 -> 当前JDK

drwxr-xr-x 8 根轮 272 17 Oct 11:21 A

lrwxr-xr-x 1 root wheel 1 17 Oct 11:21 当前 -> A

lrwxr-xr-x 1 根轮 52 17 Oct 11:21 当前 JDK -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents


很遗憾,我无法删除 link。我收到一个不允许的操作错误:

sudo rm 当前JDK

rm:当前JDK:不允许操作

有什么想法吗?

谢谢!

如果您使用的是 运行 OS X 10.11 (El Capitan),则有一项名为 "Rootless" 的新功能可防止编辑 /System/ 下的文件,但安装程序和类似。您可以通过将 JAVA_HOME 环境变量设置为 /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home[=11 来解决任何需要您更新 CurrentJDK 符号链接的问题=]

如果您真的想修改 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 符号链接,您可能必须禁用 Rootless 模式。您也可以再次尝试 运行 Java 7 安装程序,但我不确定这是否有效

可在此处找到有关无根功能的更多信息:https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really

El Capitan 新功能:系统完整性保护 (SIP),是导致此问题的原因。我必须先禁用 SIP。

按照以下步骤禁用 SIP:

重新启动您的 Mac。 在 OS X 启动之前,按住 Command-R 并一直按住,直到您看到一个 Apple 图标和一个进度条。发布。这会引导您进入 Recovery。 从实用程序菜单中,select 终端。 在提示符下准确键入以下内容,然后按 Return:

csrutil disable

终端应显示 SIP 已禁用的消息。 从苹果菜单,select 重新启动。 您可以按照上述步骤重新启用 SIP,但改为使用 csrutil enable

适用于 macOS Catalina 10.15.2 和 RStudio 1.2.5036 的步骤

从这里安装 Java 11.0.1(需要免费帐户):

https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase11-5116896.html

运行javareconf

您可能需要 运行 下面的命令,但 RStudio 似乎不确认设置:

sudo R CMD javareconf 

从源

删除(如果已安装)并重新安装 rJava
remove.packages("rJava") 
install.packages("rJava", type="source", repos="http://cran.rstudio.com")

从源代码安装 rJava 似乎 运行 一个不同的配置设置将寻找 Java 并且它会显示 "checking Java support in R" 作为输出的一部分被 RStudio 接受。

更改 ~/.Rprofile

可能还需要对 .Rprofile 进行此更改:

options(java.home="/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home")
Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/")