裝完之后,發現還是沒有解決,我本人完全不懂Java,便按照如下鏈接對Java進行了配置:
- 在terminal中運行
java -version
查看已安裝的版本,正常情況下就應該有以下內容。
如果沒有版本信息,說明 jdk 沒有正確安裝,到 Oracle 官網下載一個 jdk 并安裝就可以了。
- 檢查 JAVA_HOME 變量是否設置正確
echo $JAVA_HOME
以查看 JAVA_HOME 變量。如果結果是一個路徑,則一切正常。而如果沒有任何顯示,則需要做一下配置,我就是沒有任何顯示,所以按照以下進行了配置:
在 terminal 中運行
open .bash_profile
打開 .bash_profile,這是配置環境變量的地方。如果打開失敗則是因為沒有這個文件,先用
touch .bash_profile
新建這一文件,然后再打開它進行編輯。輸入代碼:
export JAVA_HOME=`/usr/libexec/java_home`
保存。運行
source .bash_profile
來應用更改,重啟 terminal 再查看 JAVA_HOME 便能看到路徑了。
快捷鍵command+shift+G打開“前往文件夾”,可以按以上顯示的路徑進入查看。
- 重置 R 中的 java 環境變量
在terminal中,使用
sudo R CMD javareconf
- 在 RStudio 中配置 java 環境變量
打開 RStudio,在控制臺運行
options("java.home")
如果結果為 NULL,則環境變量為空,需要設置。參考下列語句對環境變量進行設置:
options("java.home"="/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home")#"/Libraray/Jav...ts/Home"這一串需要是你的JAVA_HOME路徑
- 檢查其他問題
在完成上述步驟后,極大可能這一問題已經解決了,但我仍然不能加載 rJava 庫。為什么呢?回頭看看報錯信息的一部分:
Library not loaded: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
lib 路徑為什么憑空冒出來一個不存在的版本號11.0.1呢?我可從來沒有安裝過這個版本的 jdk,嘗試著解決這個問題:
在控制臺運行
library(rJava)
之前,將目錄名 jdk-11.0.4.jdk 暫時改為 jdk-11.0.1.jdk
- 問題原因推測
rJava 包的安裝需要用到 java 運行庫,加載過程使用的腳本 rJava.so 沒有使用 java 的環境變量,而是通過檢測系統的 jdk 版本直接讀取指定目錄中的 lib 文件,這一個文件目錄在 jdk11 中被固定為 11.0.1,因此任意更高版本的 jdk11 都將遇到這一錯誤。其他版本 jdk 也可能會有類似錯誤。
最后,不要忘記把 jdk 目錄名改回來
以上修改方法均參考自https://zhuanlan.zhihu.com/p/84978204?from_voters_page=true
解決完之后,我可以正常加載xlsx和rJava包了,說明配置成功!
但是我在安裝這個包的時候發現了以下問題而不能安裝!!!!
我查了一下,發現官網上說這個問題的出現是因為Java前后版本的不同所導致的,官網上給了一個文件:
但是不知道該怎么具體操作,但知道是版本問題,所以我重新下載了一個舊版本的Java,一共重新下了倆:下載了13.不行,重新下載了1.8.0_241
然后直接去R studio中,設置環境變量
options("java.home"="/Library/Java/JavaVirtualMachines/jdk-1.8.0_241.jdk/Contents/Home")
install.packages("~/Downloads/MSGFplus_1.20.0.tgz", repos = NULL, type = .Platform$pkgType)
library(MSGFplus)
library(xlsx)
library(rJava)
均沒問題!!
小結:以后再遇到Java版本問題,需要升級的話,直接下載新版本,刪掉舊版本,在terminal確定安裝好即可,然后去R里重新配置。