2

I have asked a similar question before, but didn't get any answers that I could actually implement. I've also read the answers here and here, but couldn't implement any of them (partially because no answer actually retraces all of its steps.

Problem

I'm getting an error when trying to load rJava on R 3.5.2 and MacOS Mojave 10.14.3:

> library(rJava) Error: package or namespace load failed for ‘rJava’: .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/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-11.0.1.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 

Attempted Solutions

I first tried this solution, which didn't work. Then, based on this answer, I tried the following:

Entered the following on Terminal:

$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home 

Then tried the following on R:

> options("java.home"="/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home") > > Sys.setenv(LD_LIBRARY_PATH='$JAVA_HOME/server') > > dyn.load('/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib/server/libjvm.dylib') > > library(rJava) Error: package or namespace load failed for ‘rJava’: .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/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-11.0.1.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 

I've also tried:

> options("java.home"="/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin") > Sys.setenv(LD_LIBRARY_PATH='$JAVA_HOME/server') > dyn.load('/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib/server/libjvm.dylib') > library(rJava) Error: package or namespace load failed for ‘rJava’: .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/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-11.0.1.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 

In the past, I've downgraded succesfully to R 3.1, but I'd rather not have to do that every time I want to use rJava

2 Answers 2

1

This is the setup that works for me

  1. macOS Mojave - 10.14.3

  2. XQuartz - version 2.7.11 - https://www.xquartz.org

enter image description here

  1. R - version 5.3.2

    > R --version R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under the terms of the GNU General Public License versions 2 or 3. For more information about these matters see http://www.gnu.org/licenses/. 
  2. Java - 11.0.1

    > java -version java version "11.0.1" 2018-10-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode) 
  3. rJava - installed from CRAN

    > > install.packages("rJava") --- Please select a CRAN mirror for use in this session --- Fontconfig warning: ignoring UTF-8: not a valid region tag trying URL 'https://cloud.r-project.org/bin/macosx/el- capitan/contrib/3.5/rJava_0.9-10.tgz' Content type 'application/x-gzip' length 739259 bytes (721 KB) ================================================== downloaded 721 KB The downloaded binary packages are in /var/folders/... > library(rJava) > 

Update

In your case, it looks like JDK used during installation/compilation of rJava is missing. You can tell that from the message:

dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-11.0.1.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 

Make sure this file exists:

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib 

Probably, it's missing. You have two options here: install Java 11.0.1, reconfigure R.

You can list all the available JVM installations using /usr/libexec/java_home -V

Reproducing initial issue, and fixing it

  1. Let's pretend we have removed JDK 11.0.1

    > pwd /Library/Java/JavaVirtualMachines > tree -L 1 . |-- jdk-11.0.1.jdk~ `-- jdk-11.0.2.jdk > java -version java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) 
  2. Let's try to load rJava

    > R R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit) ... ... ... > library(rJava) Error: package or namespace load failed for ‘rJava’: .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/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-11.0.1.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 
  3. Let's fix it

    > sudo R CMD javareconf Java interpreter : /usr/bin/java Java version : 11.0.2 Java home path : /Library/Java/JavaVirtualMachines/jdk-11.0.2.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-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-11.0.2.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-11.0.2.jdk/Contents/Home/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation JAVA_HOME : /Library/Java/JavaVirtualMachines/jdk-11.0.2.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. 
  4. It should work now

    > R R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin15.6.0 (64-bit) ... ... ... > library(rJava) > quit() 
Sign up to request clarification or add additional context in comments.

2 Comments

Unfortunately, this is not exactly the same env. Take a look at the update.
You are right, of course. I was running JDK 11.0.2. sudo R CMD javareconf only works on R terminal, though. Any idea of why this doesn't work on R GUI? Anyway, I just installed JDK 11.0.1 and got it working on R GUI. Thanks a lot!
1

I had a similar problem. Its usually best if you start from scratch if you have tried all these solutions and nothing worked. You wouldnt want one of these "fixes" to cause you more issues because most of them require you to change environment variables.

Here is how I fixed it.

  1. Install the latest JAVA JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  2. Run sudo R CMD javareconf in the terminal. Dont change any of the environment variables on your own.

Hope it helps.

2 Comments

Unfortunately didn't work. I've started from scratch, as well. After everything I done I formatted my HD and reinstalled MacOS.
OK, this only works if one is using R terminal. Any idea of why this doesn't work on R GUI?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.