I am following this tutorial on rJava: http://cran.r-project.org/web/packages/helloJavaWorld/vignettes/helloJavaWorld.pdf
I have made all the files as specified in t
Here is a solution that worked pretty good for me:
In the terminal run: R CMD javareconf
Get the JAVA_HOME path and the Java library path from the output Example
JAVA_HOME : /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre 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
alias rstudio="DYLD_FALLBACK_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/server open -a RStudio"
Type rstudio in your terminal
Done! Rstudio will open pointing to the right java version
I had a similar problem, but this solution didn't work for me. I eventually got it working, but now I'm not sure which of the things I changed solved the problem. Here's what I did:
I added the following lines to my .bash_profile
:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre"
export LD_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/server
export PATH=$PATH:$JAVA_HOME/bin
I set my java.home
option and my DYLD_FALLBACK_LIBRARY_PATH
environmental variable in R:
options(java.home="/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk")
Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/server/")
I re-installed Apple's version of Java 1.6 just in case, as per this issue thread: https://github.com/s-u/rJava/issues/37
R CMD javareconf
sudo R
. Then in the R session: install.packages('rJava',,'http://www.rforge.net/')
. Installing from source was crucial to making rJava pick up on R's new Java settings. When I didn't install from source, rJava would install ok, but it would continue to use JRE 1.6. You can check which JRE rJava uses by running:
library(rJava)
.jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
Running R as root was crucial to making rJava install correctly from the RForge source. When I tried to run install.packages('rJava',,'http://www.rforge.net/')
as User, I got the following error messages:
If running R in the command line, rJava would not install correctly:
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’
If running R as an application from Finder, rJava would install, but not load:
> 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’
Hopefully this answer will save someone else some time!
Edited to add: Two of my professors followed these instructions and ran into the following issue: rJava would work when running R in the command line, but would fail to load when running RStudio or the default Mac R app.
Joe Ramsey figured out the solution. He writes:
Apparently RStudio grumbles about having to use the default user/directory that Apple uses to open applications.
This article describes it: http://jeromyanglim.tumblr.com/post/34221143729/how-to-run-rstudio-from-the-command-line-on-osx
[To fix the issue] You go to the command line and type:
open -a rstudio
oropen -a R
Edit number two: I just installed rJava on one of the school computers, running Ubuntu 14.04.4 LTS (64-bit). I was able to install rJava when running R as root. However, when I then tried to run R as user and load the package, I got a brand new loading error:
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/lizziesilver/R/x86_64-pc-linux-gnu-library/3.2/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘rJava’
I checked the directory; rJava.so definitely existed. It turned out that I didn't have the right permissions for it:
...$ ls -l /home/lizziesilver/R/x86_64-pc-linux-gnu-library/3.2/rJava/libs/rJava.so
-rwxr-xr-x 1 root root 353325 Feb 26 16:58 /usr/lib/R/library/rJava/libs/rJava.so
So I changed the permissions:
sudo chmod -R a+rX /home/lizziesilver/R/x86_64-pc-linux-gnu-library/3.2/rJava/
Then reconfigured R's java settings:
export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/lib/amd64:/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
sudo R CMD javareconf
Now rJava loads, even when running R as user instead of root!
rJava: the package that keeps on giving (config errors)
I solved the problem by installing from the latest source package on RForge: http://www.rforge.net/rJava/files/
cd /tmp
wget http://www.rforge.net/rJava/snapshot/rJava_0.9-7.tar.gz
R CMD INSTALL rJava_0.9-7.tar.gz
In R:
> library(helloJavaWorld)
Loading required package: rJava
> helloJavaWorld()
[1] "Hello from java!"
There's a lot of conflicting info about rJava on SO. My concern with a lot of these answers was that once you start monkeying with the JAVA_HOME
variables, you run the risk of borking your Java install completely -- the solution can be worse than the disease. Here's a quick rundown of 'do no harm' things you can do if you are having rJava problems.
1) in the terminal, run R CMD javareconf
. This is a script written by R Core that will "Detect current Java setup and update the corresponding configuration in R." Take a look at the internals here.
2) re-install rJava from source. install.packages("rJava", type = "source")
.
3) Open R from the command line. Load rJava. Open RStudio from the command line (directions). Load rJava. Do you get the same error? If not, great - you're getting warmer! You've isolated your problem to an issue with RStudio, not R itself.
4) There's some sort of issue with RStudio and rJava that relates to - actually, you know what, I'm not even going to try to finish that sentence, because frankly it's above my pay grade. Dynamic libraries something something.
There are a bunch of writeups (here, here, here, and here) on the web about this. My favorite title was "the rJava nightmare."
Your mileage may vary, but this SO answer was all I needed to get RStudio to play nice -- one line of code on the terminal, and all it does is creates a symbolic link. No changes to permissions, no modification of environment variables - just a simple symlink.
If that doesn't do it for you, I'd suggest reading the linked blog posts above before you start copy/pasting the multitude of this worked for me answers littered across SO.