2016-08-02 18 views
1

Dieses Problem hat mich seit einer Woche geplagt. Ich habe rJAVA von R installiert, das auf einem Ubuntu-Server 14.04 läuft. Ich installierte rjava Paket als Quelle wie folgt aus:rJAVA falsche Java-Version

install.packages("rJava", type="source") 

und ich bekomme:

DONE(rJava) 

ich java-8-openjdk installiert haben und wenn java -version läuft ich die richtige Version und dies ist die Ausgabe:

openjdk version "1.8.0_91" 
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14) 
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 

Allerdings, wenn ich die Java-Version in R unter Verwendung von entweder

überprüfen

oder

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

Die Java-Version ist noch auf 1,7:

Java interpreter : /usr/lib/jvm/default-java/jre/bin/java 
Java version  : 1.7.0_101 
Java home path : /usr/lib/jvm/default-java 
Java compiler : /usr/lib/jvm/default-java/bin/javac 
Java headers gen.: /usr/lib/jvm/default-java/bin/javah 
Java archive tool: /usr/lib/jvm/default-java/bin/jar 

trying to compile and link a JNI program 
detected JNI cpp flags : -I$(JAVA_HOME)/include 
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm 
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/default-java/include  -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o 
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR 


JAVA_HOME  : /usr/lib/jvm/default-java 
Java library path: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server 
JNI cpp flags : -I$(JAVA_HOME)/include 
JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm 
Updating Java configuration in /usr/lib/R 
Done. 

Bitte lassen Sie mich wissen, was ich fehle.

+0

Ändern Sie die Umgebungsvariable 'JAVA_HOME' in das Verzeichnis' java-8 jvm'. – Abdou

+0

@abdou Danke. Wenn ich $ JAVA_HOME widerspreche, bekomme ich /usr/lib/jvm/java-8-openjdk-amd64 –

+0

Chris, Dirks Antwort ist ziemlich umfassend. Ich bin überrascht, dass es das Problem nicht löst. Sie können jedoch versuchen, die Variable 'JAVA_HOME' in der Datei .Rprofile auf das Verzeichnis' java-8 jvm' zu setzen. Ich bezweifle wirklich, dass es viel Unterschied machen wird, aber es ist zumindest etwas, das man versuchen sollte. – Abdou

Antwort

1

Ich denke, 'alle' Sie tun müssen, ist zu

  1. sicherzustellen, dass Ihr 'neues' Java kommt zuerst in den $PATH; sein Installer hat sich vielleicht an das Ende angehängt - also richtig.

  2. sicherstellen, dass Sie sudo R CMD javareconf mit diesem Pfad ausführen.

diese beiden vielleicht nehmen zusammen

PATH=/opt/java/whatever/bin:$PATH sudo R CMD javareconf 

ist alles was man braucht. Passen Sie den Pfad wie gewünscht an.

Schließlich rJava aus der Quelle möglicherweise nicht erforderlich. Ich mache sudo apt-get install r-cran-rjava.

+0

Danke Dirk. Ich habe das ohne Glück gemacht. Immer noch mit Java 7 für R –

+0

Hm. Ich denke, das funktionierte für mich einmal, als ein anderer Software-Stack ein anderes/neueres Java benötigte. –

0

Ich hatte das gleiche Problem: java -version Java gab 8, aber sudo R CMD javareconf gab Java 7.

sudo R CMD javareconf --help Laufen gibt:

Environment variables that can be used to influence the detection: 
JAVA   path to a Java interpreter executable 
       By default first 'java' command found on the PATH 
       is taken (unless JAVA_HOME is also specified). 
JAVA_HOME  home of the Java environment. If not specified, 
       it will be detected automatically from the Java 
       interpreter. 

Die Dokumentation uns, was Dirk vorgeschlagen zu tun sagt: sicherzustellen, dass die erste java gefunden auf PATH ist die eine, die wir wollen. Das hat in meinem Fall nicht geholfen, obwohl JAVA_HOME nicht gesetzt wurde. Abdous Vorschlag, JAVA_HOME in meinem .Rprofile zu setzen, hilft auch nicht.

das Problem zu lösen, hatte ich rootJAVA_HOME zu der, die ich wollte setzen (weil R CMD javareconf als sudo ausgeführt wird):

sudo -i 
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac)))) 
R CMD javareconf 
exit 
0

Ich hatte das gleiche Problem mit rJava auf Ububtu 14.04.Das Ändern der ersten Zeile in der Datei /usr/lib/R/etc/javaconf zu : ${JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/bin/java} und Ausführen von sudo R CMD javareconf löste das Problem in meinem Fall.