LoginSignup
0
1

M1 Mac上でRのパッケージでrJavaのエラーが出た場合の対処方法(備忘録)

Last updated at Posted at 2022-07-28

背景

AppleのCPUであるM1を搭載したMacbook AirでRStudioのスクリプトを使用したところ、以前のIntel CPUのMacbook Airで動いていたRのパッケージの一部が動かなくなってしまいました。

エラーメッセージで調べてみた所、それらのパッケージに共通するのがJavaをRで使用するrJavaパッケージで、Javaの仕様が異なり、必要なJavaを入れないと動作しなくなったことがわかりました。
今回、解決方法を見つけたので、自分の備忘録としてこの記事を投稿します。

この記事ではmacをM1のCPUに買い換えたら動作しなくなった場合の対策方法をまとめました。
出典はosuzukiさんの以下の記事です。

発生する環境と状況

発生環境

  • M1 Macbook Air
  • macOS Monterey (BigSurでも発生していました)
  • チップ:Apple M1
  • R 4.2.1
  • RStudio 2022.07.1 Build 554
  • デフォルトのJava: 1.8.331.09 (x86_64) "Oracle Corporation" - "Java"がインストールされている状態

##エラーの状況
研究で使用する目的でrcdkパッケージを以下の通り読み込んだ所、以下のエラーメッセージが発生。
読んでみると ”Error: package ‘rJava’ could not be loaded”のエラーメッセージがあり、基本となるrJavaが読み込まれておらず、それに依存するrcdkやrcdklibsパッケージがインストールされないことを確認。

install.packages("rcdk")
library(rcdk)

> library (rcdk)
Loading required package: rcdklibs
Loading required package: rJava
Error: package or namespace load failed for ‘rJava’:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(jli, FALSE)
error: unable to load shared object '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib':
dlopen(/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib, 0x000A): tried: '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))
Error: package ‘rJava’ could not be loaded

発生原因

  • macOSでデフォルトでインストールされているJavaがOracleのもので、rJavaが対応をしていない。

インストールされているJavaはTerminal.Appでjava --versionで確認が可能で、私のmacには1.8.331.09 (x86_64) "Oracle Corporation" - "Java"が入っていました。

また、現在のアーキテクチャーは同じくTerminal.Appのuname -mのコマンドから確認可能です。

  • arm64 -> ARMアーキテクチャ で実行中
  • x86_64 -> Rosetta利用 または ネイティブIntelアーキテクチャ で実行中

私の環境ではarm64でしたので、rJavaを使用する場合にARMアーキテクチャーに対応したJavaが必要ですが、入っていないため、上記エラーが出ているのが原因でした。

RStudioのエラーメッセージをよく確認すると、 Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')) って書いてありますね。

対策方法

上記の原因から、ARMアーキテクチャーに対応したJavaを入れて対策を取りました。

スクリーンショット 2022-07-28 14.18.53.png

  • VS Codeで動作確認を行う
  • Command + Shift + Pを押してJavaと入力し Create Java Project選ぶ
    スクリーンショット 2022-07-28 14.22.35.png
  • Project TypeとLocationを指定
    今回はJavaが動作するか簡易に確認するプロジェクトなので、Project Typeを"No build tools"、Locationをダウンロードフォルダに指定しました。
    スクリーンショット 2022-07-28 14.25.01.png
  • 適当なProject名を入れます。
    私はM1 macという名前を入れました。
    スクリーンショット 2022-07-28 14.33.44.png
  • src/App.java を開く
    スクリーンショット 2022-07-28 14.36.41.png
  • Run押して実行して、画面の右下のTerminalに以下のような"Hello World!"の文字列が表示されれば、無事Javaがインストールされています。
    スクリーンショット 2022-07-28 14.39.49.png

この設定を行うことで、M1 macのRStudioでrJavaやrJavaを使用しているパッケージが使用できるようになりました。

参考サイト

M1 Mac に Java の開発環境構築(インストール〜実行)してみた
https://zenn.dev/osuzuki/articles/b41dc7be15e2b5

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1