title: How can I make rJava use the newer version of java on osx?
body: <p>I am following this tutorial on rJava: <a href="http://cran.r-project.org/web/packages/helloJavaWorld/vignettes/helloJavaWorld.pdf">http://cran.r-project.org/web/packages/helloJavaWorld/vignettes/helloJavaWorld.pdf</a></p>
  
  <p>I have made all the files as specified in the tutorial and installed the helloJavaWorld package, but once I run the helloJavaWorld() function, it complains:</p>
  
  <pre><code>&gt; helloJavaWorld()
  Error in .jnew("HelloJavaWorld") :
    java.lang.UnsupportedClassVersionError: HelloJavaWorld : Unsupported major.minor version 52.0
  </code></pre>
  
  <p>So I tried to check the java version that rJava is using:</p>
  
  <pre><code>.jinit()
  jvm = .jnew("java.lang.System")
  jvm.props = jvm$getProperties()$toString()
  jvm.props &lt;- strsplit(gsub("\\{(.*)}", "\\1", jvm.props), ", ")[[1]]
  jvm.props
  
   [1] "java.runtime.name=Java(TM) SE Runtime Environment"
   [2] "sun.boot.library.path=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries"
   [3] "java.vm.version=20.65-b04-466.1"
   [4] "awt.nativeDoubleBuffering=true"
   [5] "gopherProxySet=false"
   [6] "mrj.build=11M4716"
   [7] "java.vm.vendor=Apple Inc."
   [8] "java.vendor.url=http://www.apple.com/"
   [9] "path.separator=:"
  [10] "java.vm.name=Java HotSpot(TM) 64-Bit Server VM"
  [11] "file.encoding.pkg=sun.io"
  [12] "user.country=US"
  [13] "sun.os.patch.level=unknown"
  [14] "java.vm.specification.name=Java Virtual Machine Specification"
  [15] "user.dir=/private/tmp"
  [16] "java.runtime.version=1.6.0_65-b14-466.1-11M4716"
  [17] "java.awt.graphicsenv=apple.awt.CGraphicsEnvironment"
  [18] "java.endorsed.dirs=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/endorsed"
  [19] "os.arch=x86_64"
  [20] "java.io.tmpdir=/var/folders/5d/44ctbbln4dsflgzxph1dm8wr0000gn/T/"
  [21] "line.separator=\n"
  [22] "java.vm.specification.vendor=Sun Microsystems Inc."
  [23] "os.name=Mac OS X"
  [24] "sun.jnu.encoding=MacRoman"
  [25] "java.library.path=.:/Users/kaiyin/Library/Java/Extensions:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
  [26] "java.specification.name=Java Platform API Specification"
  [27] "java.class.version=50.0"
  [28] "sun.management.compiler=HotSpot 64-Bit Tiered Compilers"
  [29] "os.version=10.10"
  [30] "http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16"
  [31] "user.home=/Users/kaiyin"
  [32] "user.timezone="
  [33] "java.awt.printerjob=apple.awt.CPrinterJob"
  [34] "file.encoding=MacRoman"
  [35] "java.specification.version=1.6"
  [36] "java.class.path=/Library/Frameworks/R.framework/Versions/3.1/Resources/library/rJava/java/boot:/Library/Frameworks/R.framework/Versions/3.1/Resources/library/helloJavaWorld/java"
  [37] "user.name=kaiyin"
  [38] "java.vm.specification.version=1.0"
  [39] "java.home=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"
  [40] "sun.arch.data.model=64"
  [41] "user.language=en"
  [42] "java.specification.vendor=Sun Microsystems Inc."
  [43] "awt.toolkit=apple.awt.CToolkit"
  [44] "java.vm.info=mixed mode"
  [45] "java.version=1.6.0_65"
  [46] "java.ext.dirs=/Users/kaiyin/Library/Java/Extensions:/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext"
  [47] "sun.boot.class.path=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar"
  [48] "java.awt.headless=true"
  [49] "java.vendor=Apple Inc."
  [50] "file.separator=/"
  [51] "java.vendor.url.bug=http://bugreport.apple.com/"
  [52] "sun.io.unicode.encoding=UnicodeLittle"
  [53] "sun.cpu.endian=little"
  [54] "mrj.version=1070.1.6.0_65-466.1"
  [55] "socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16"
  [56] "ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16"
  [57] "sun.cpu.isalist="
  </code></pre>
  
  <p>It looks like it uses java 1.6 (preinstalled on OSX), but I compiled the HelloJavaWorld class with java 1.8, which leads to the question: How can I make rJava use the newer version of java?</p>
  
  <p>Output of <code>R CMD javareconf</code>:</p>
  
  <pre><code>Java interpreter : /usr/bin/java
  Java version     : 1.8.0_25
  Java home path   : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
  Java compiler    : /usr/bin/javac
  Java headers gen.: /usr/bin/javah
  Java archive tool: /usr/bin/jar
  Non-system Java on OS X
  
  trying to compile and link a JNI progam
  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/jdk1.8.0_25.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include    -fPIC  -Wall -mtune=core2 -g -O2  -c conftest.c -o conftest.o
  clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
  
  
  JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.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
  Done.
  </code></pre>
  
  <p>Content of /Library/Frameworks/R.framework/Versions/3.1/Resources/etc/javaconf</p>
  
  <pre><code>## Versions from settings when configure was run
  : ${JAVA_HOME=}
  : ${JAVA_CPPFLAGS=~autodetect~}
  : ${JAVA_LD_LIBRARY_PATH=~autodetect~}
  : ${JAVA_LIBS=~autodetect~}
  </code></pre>
  
  <p>Content of /Library/Frameworks/R.framework/Versions/3.1/Resources/etc/ldpaths</p>
  
  <pre><code>➜  etc  cat ldpaths
  : ${JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre}
  : ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/server}
  if test -n ""; then
  : ${R_LD_LIBRARY_PATH=${R_HOME}/lib:}
  else
  : ${R_LD_LIBRARY_PATH=${R_HOME}/lib}
  fi
  if test -n "${R_JAVA_LD_LIBRARY_PATH}"; then
    R_LD_LIBRARY_PATH="${R_LD_LIBRARY_PATH}:${R_JAVA_LD_LIBRARY_PATH}"
  fi
  ## This is DYLD_FALLBACK_LIBRARY_PATH on Darwin (OS X) and LD_LIBRARY_PATH elsewhere
  if test -z "${DYLD_FALLBACK_LIBRARY_PATH}"; then
    DYLD_FALLBACK_LIBRARY_PATH="${R_LD_LIBRARY_PATH}"
  else
    DYLD_FALLBACK_LIBRARY_PATH="${R_LD_LIBRARY_PATH}:${DYLD_FALLBACK_LIBRARY_PATH}"
  fi
  export DYLD_FALLBACK_LIBRARY_PATH
  </code></pre>