如何在MacOS中更改当前JDK符号链接

3

我Mac上目前有以下JAVA版本:


MyMac$ cd /Library/Java/JavaVirtualMachines

$ ls -la

total 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 root wheel 102 14 Jul 22:52 1.6.0.jdk

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


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


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

$ls -la

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

drwxr-xr-x 10 root wheel 340 17 Oct 11:21 ..

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.4 -> CurrentJDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.4.2 -> CurrentJDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.5 -> CurrentJDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.5.0 -> CurrentJDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.6 -> CurrentJDK

lrwxr-xr-x 1 root wheel 10 17 Oct 11:21 1.6.0 -> CurrentJDK

drwxr-xr-x 8 root wheel 272 17 Oct 11:21 A

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

lrwxr-xr-x 1 root wheel 52 17 Oct 11:21 CurrentJDK -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents


不幸的是,我无法删除该链接。我得到了一个操作不允许的错误:

sudo rm CurrentJDK

rm: CurrentJDK: Operation not permitted

有什么想法吗?

谢谢!

3个回答

5

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

按照以下步骤禁用 SIP:

重新启动您的 Mac。 在 OS X 启动之前,按住 Command-R 并保持按下,直到您看到苹果图标和进度条。然后松开。这会将您引导到恢复模式。 从实用工具菜单中选择终端。 在提示符处键入以下内容,然后按回车键:

csrutil disable

终端应该显示SIP已被禁用的消息。 从苹果菜单中,选择重启。 您可以按照上述步骤重新启用SIP,但使用csrutil enable


1
如果您正在运行OS X 10.11(El Capitan),则有一个名为“Rootless”的新功能,它防止编辑/System/下的文件,除非是安装程序等。您可以通过将JAVA_HOME环境变量设置为/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home来解决需要更新CurrentJDK符号链接的任何问题。
如果您真的想修改/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK符号链接,则可能必须禁用Rootless模式。您也可以尝试再次运行Java 7安装程序,但我不确定这是否有效。
有关Rootless功能的更多信息,请访问此处:https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really

0

在 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并显示“在R中检查Java支持”作为输出的一部分,这似乎被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/")

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