iMac (Retina 5K, 27-inch, 2017)
macOS High Sierra 10.13.6
R 3.5.1
Java 10.0.1
で、
RWeka インストール後に、
library(RWeka)
したら、
エラー: package or namespace load failed for ‘RWeka’:
.onLoad は loadNamespace()('rJava' に対する)の中で失敗しました、詳細は:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: 共有ライブラリ '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so' を読み込めません:
dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so
Reason: image not found
と、エラーになった。
Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
って言われたけど
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
にある。
色々やったけれど、次の方法で解決した。
$ brew install gcc
~/.R/Makevars
に、
CC=/usr/local/bin/gcc-8
と書いて、
download.packages("rJava", destdir="/Users/myuser/", type="source")
install.packages("/Users/myuser/rJava_0.9-10.tar.gz", repo=NULL, type="source")
で、エラーはなくなった。
-----やった色々-----------------------------------------------------------------------------------------------------------------
×
http://blog.musirao.net/node/6076
に書いた
$ sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
を試した。
だが、解決しない。
成功した時のエラーは、
Library not loaded: @rpath/libjvm.dylib
と、@rpath/libjvm.dylib だが、
今回は、
Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
だった。
××
https://qiita.com/jjzak/items/470232f08bec4c4df02b
https://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudi…
https://github.com/s-u/rJava/issues/127
https://github.com/s-u/rJava/issues/156
には、
R CMD javareconf
すればいい
とあるのだが、
$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 10.0.1
Java home path : /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
clang -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/darwin -I/usr/local/include -fPIC -Wall -g -O2 -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking.
JAVA_HOME : /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
と、
Java home path は、 /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
と認識しているが、
エラーは変わらない。
×××
R CMD javareconf
の結果に表示される
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking.
が気になったので、
https://stackoverflow.com/questions/51314888/ld-warning-text-based-stub…
にあるように、
$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
したが、ld: warning が消えなかった。
××××
https://suryu.me/post/rjava_for_sierra/
に
dyn.load()
で、先読みさせればよいとあったので、
dyn.load("/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server/libjvm.dylib")
してから、
library(RWeka)
したけれど、エラーは変わらなかった。
×××××
パッケージのソースからのインストールを試みた。
http://d.hatena.ne.jp/t_ume_tky/20120725/1343189052
に
パッケージのソースダウンロード方法が記載されていた。
download.packages("rJava", destdir="/Users/myuser/", type="source")
でダウンロードして、
https://code.i-harness.com/ja/q/167e21
を参考に
install.packages("/Users/myuser/rJava_0.9-10.tar.gz", repo=NULL, type="source")
でインストール。
が、
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’
* removing ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava’
とエラーになる。
途中に表示された
clang: error: unsupported option '-fopenmp'
が影響あるのかと思い、
https://heavywatal.github.io/rstats/config.html
を参考に
~/.R/Makevars
に、
CC=/usr/bin/gcc
と書いて実行したけれど、同じエラーが出る。
××××××
https://github.com/s-u/rJava/issues/156
には、
The default is Java 9
だとあったので、あきらめて
sudo ln -s /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
して、エラーは、出なくなった。
○
https://qiita.com/ligerbolt/items/6e27c882838fdcc1a490
をよく読んだら、
brew からインストールした gcc を使っていた!!!!
$ brew install gcc
してから、
~/.R/Makevars
に、
CC=/usr/local/bin/gcc-8
と書いて、
install.packages("/Users/myuser/rJava_0.9-10.tar.gz", repo=NULL, type="source")
したら、インストール成功。
$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-9.jdk/
してから、
library(RWeka)
しても、エラーはなくなった。