R包安裝遇到Java版本問題

重新裝完R 3.6.2之后,發現xlsx 和rJava兩個包都不能加載,覺得是不是自己沒裝Java的問題,便在官網上下載了最新版本的Java
image.png

裝完之后,發現還是沒有解決,我本人完全不懂Java,便按照如下鏈接對Java進行了配置:

  1. 在terminal中運行
java -version

查看已安裝的版本,正常情況下就應該有以下內容。

查看Java版本

如果沒有版本信息,說明 jdk 沒有正確安裝,到 Oracle 官網下載一個 jdk 并安裝就可以了。

  1. 檢查 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打開“前往文件夾”,可以按以上顯示的路徑進入查看。

  1. 重置 R 中的 java 環境變量
    在terminal中,使用
sudo R CMD javareconf
  1. 在 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路徑
  1. 檢查其他問題
    在完成上述步驟后,極大可能這一問題已經解決了,但我仍然不能加載 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

  1. 問題原因推測

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包了,說明配置成功!
但是我在安裝這個包的時候發現了以下問題而不能安裝!!!!


安裝MSGFplus報錯

我查了一下,發現官網上說這個問題的出現是因為Java前后版本的不同所導致的,官網上給了一個文件:
官網問題的解決

但是不知道該怎么具體操作,但知道是版本問題,所以我重新下載了一個舊版本的Java,一共重新下了倆:下載了13.不行,重新下載了1.8.0_241
安裝包
下載的Java
將兩個高版本的刪掉之后,只保留了1.8.0_241,然后在terminal中,查看了一下,發現自動變成了1.8.0_241版本
image.png

然后直接去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里重新配置。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.JAVA的JDK的安裝與環境變量配置 (1)JDK的下載 網址:https://www.oracle.com/...
    忘詞x閱讀 467評論 0 1
  • Java所需要了解的一些事 首先,對于JAVA來說,JAVA環境配置需要了解一下幾個內容。 1.JDK(Java ...
    筏執閱讀 862評論 0 3
  • 1、運行環境 主機IP 主機名 2、配置主機名(分別在五臺機器上執行) hostname +主機名例如: h...
    獻給記性不好的自己閱讀 3,581評論 0 6
  • 華生二十載,可謂半生、大半生都于外出求學中度過。所謂家鄉,似乎只偶爾閃現在“童年”這兩個輕盈而又沉猛的文字里。 從...
    泥土入塵埃閱讀 283評論 0 2
  • 你看到了她 她站在河流邊 她坐在了一棵樹下面 她長得那么美 像河面反射的那一剎光 像枝頭綠意中的那一抹紅 她以為 ...
    一詞一句閱讀 241評論 3 3