Asked  7 Months ago    Answers:  5   Viewed   37 times

I recently "upgraded" from OSX Mountain Lion to Yosemite and from R 3.1.3 to 3.2. Immediately after the upgrade, when I opened R or RStudio I got a pop-up message saying that I needed to install Java 6. In addition, loading rJava or any package that depends on rJava (e.g., xlsx) caused RStudio to crash (R also crashed when I tried this by opening R.app directly).

After trying a few fixes found on Stack Overflow and elsewhere (more details below), I am at a point where loading rJava or any package that depends on rJava no longer causes R to crash, but results in the following error:

library(rJava)
Error : .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.2/Resources/library/rJava/libs/rJava.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so
  Reason: image not found
Error: package or namespace load failed for ‘rJava’

However, if I invoke R from the command line and then load rJava or any package that depends on rJava, it seems to work (or at least I don't get any error messages).

I've tried a number of different attempted fixes, some of them a few times, and can't quite remember exactly what I did in what order (didn't realize this would be such a morass and wasn't really keeping track), but here's the gist of it:

  • Added the following to my .bash_profile (per this SO answer):

    export JAVA_HOME="/usr/libexec/java_home -v 1.8"
    export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server

  • Reconfigured java from the command line as follows:

    sudo R CMD javareconf -n

  • Checked options("java.home") and discovered this was set to NULL. I tried setting it to the following (per this SO question):

    options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")

  • Installed the latest Java Development Kit and reinstalled rJava from source (can't remember where I found that one).

At some point while trying all of these, I was able to load rJava without crashing R, but instead got the error message posted above. In addition, when I quit RStudio, it would seem to close normally, but then an "RStudio quit unexpectedly" message would pop up, indicating that the program had crashed while trying to close.

I finally decided to install Java for OS X 2014-001 (Java 6), as I seemed to be running out of options. Now, when I opened R or RStudio the "This software needs Java 6" pop-up message no longer appeared. However, I was still getting the .onLoad failed in loadNamespace() for 'rJava' error message posted above.

In reviewing some of the posts I'd already looked at, I noticed another SO answer that I'd missed before, which recommended opening RStudio with the following command line code that gives RStudio the correct path to java:

LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio

That opened an RStudio window and I was also able to load rJava and packages that depend on it without getting an error.

Lastly, I tried running R from the command line (which I hadn't done before). It turns out that on the command line, loading rJava or any package that depends on rJava works and does not throw any errors.

So, I can now get rJava to work if I open RStudio from the command line with the code that gives RStudio the java path (as noted above). However, I'd like to find a way to fix the underlying problem, whatever it may be, so that RStudio can be opened in the usual Mac way, without needing a command line kludge. I'm also concerned that having an old version of Java installed could cause problems down the road.

Does anyone have any ideas about how to diagnose and solve this issue?

 Answers

24

I had the same problem and went through the same steps as you. The final step to allow starting RStudio through Finder/Spotlight was to link libjvm.dylib to /usr/local/lib:

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

-f flag is added to force overwriting existing file/link

Tuesday, June 1, 2021
 
anjan
answered 7 Months ago
42

Uninstalling anaconda and reinstalling everything from scratch fixed the error.

Monday, August 23, 2021
 
Evan Anger
answered 4 Months ago
91

The information about approvals is stored in sqlite3 database:

/var/db/SystemPolicyConfiguration/KextPolicy

The tables you're interested in are: kext_policy and kext_load_history_v3. E.g. here is how you can view the data and the table schema:

sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy

sqlite> select * from kext_policy;
54GTJ2AU36|com.joshuawise.kexts.HoRNDIS|1|Joshua Wise|1

sqlite> .schema kext_policy
CREATE TABLE kext_policy ( team_id TEXT, bundle_id TEXT, allowed BOOLEAN, developer_name TEXT, flags INTEGER, PRIMARY KEY (team_id, bundle_id) );

Removing the approval is tricker, since the System Integrity Protection does not allow you to modify the database. So, you'd need to reboot into a recovery partition, or a different MacOS installation, then cd into the root of your volume, and run the commands like these (replace with your team_id, or use other criteria):

usr/bin/sqlite3 var/db/SystemPolicyConfiguration/KextPolicy
delete from kext_load_history_v3 where team_id='54GTJ2AU36';
delete from kext_policy where team_id='54GTJ2AU36';
.quit 
Sunday, September 12, 2021
 
bsd
answered 3 Months ago
bsd
13

Turns out

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt

was the problem for some reason. Removed that from my bash_profile and restarted a few times and everything works fine now.

Friday, November 12, 2021
 
wim
answered 3 Weeks ago
wim
62

Putting this as an answer in case other find this.

This particular issue was due to using Homebrew R on macOS which (at the time of this Q) didn't compile with X11 support.

I should have had the OP execute capabilities() first. That would have displayed something like:

##       jpeg         png        tiff       tcltk         X11        aqua    http/ftp 
##       TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
##    sockets      libxml        fifo      cledit       iconv         NLS     profmem 
##       TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
##      cairo         ICU long.double     libcurl 
##       TRUE        TRUE        TRUE        TRUE 

If X11 is FALSE, then you have an R installation w/o support for X11 and should use the macOS R distribution from CRAN.

Tuesday, November 16, 2021
 
ChriskOlson
answered 2 Weeks ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :
 
Share