2015-01-25 10 views
8

Sono stato alle prese con questo problema per un po 'di tempo. Quando installo rJava da R, richiede Java 1.6 anziché 1.8. Sto usando MAC OS 10.8.5 e questi sono i passaggi che ho già fatto.rJava non sta rilevando la versione Java corretta

Ho installato R.
Ho entrambi Java 1.6 e 1.8 sulla mia macchina.
Ho riconfigurato R dal terminale utilizzando: sudo R CMD javareconf -n.
Ecco ciò che il risultato è simile:

 
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 

cercando di compilare e collegare un progamma JNI

 
detected JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin 
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm 
gcc -arch x86_64 -std=gnu99 -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 -fPIC -mtune=core2 -g -O2 -c conftest.c -o conftest.o 
gcc -arch x86_64 -std=gnu99 -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 -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 

Poi sono andato su a R e installato il pacchetto Rjava come sorgente in questo modo: install.packages("rJava", type="source") e arrivo a DONE(rJava)

quindi quando controllo la versione utilizzando:

 
library(rJava) 
.jinit() 
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version") 

ho ancora 1.6.0_25-b17 invece di 1.8

Per favore fatemi sapere se si conosce la soluzione a questo.

+1

Avete provato 'opzioni (java.home ="/percorso/a/java ")'? –

+1

'javareconf -n' non fa nulla -' -n' dice di non apportare modifiche (vedere la documentazione R) –

risposta

8

L'ultima versione di rJava ha risolto questo problema. Ho installato la versione più recente da site utilizzando il comando

install.packages("rJava",,"http://rforge.net/",type="source")

Ora l'uscita chiamando JVM è come:

> library(rJava) 
> .jinit() 
> .jcall("java/lang/System", "S", "getProperty", "java.runtime.version") 
[1] "1.7.0_75-b13" 

Nota: ho java 1.7 e 1.6 installati, e non java 1.8

+0

Se stai usando packrat e non vuoi avere problemi con i repository esterni, ti consiglio di fare lo stesso ma usando il repo ufficiale di CRAN 'install.packages (" rJava ",," http://cran.r-project.org ", type =" source ")' – Mikolaj