2012-11-28 8 views
7

Gibt es jemanden da draußen, der es geschafft hat, rJava 0.9-3 unter OS X 10.7.4 mit Oracle Java 1.7 zu betreiben?Wie bekomme ich rJava 0.9-3 um unter OS X 10.7.4 mit Oracle Java 1.7 zu arbeiten?

R version 2.15.2 (2012-10-26) -- "Trick or Treat" Platform 
x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 

Ich habe rjava sowohl die install.packages-Funktion installiert und die Befehlszeile mit R 2.15.2 installieren. Ich bekomme keine Fehler.

$ R CMD INSTALL rJava 
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’ 
* installing *binary* package ‘rJava’ ... 

* DONE (rJava) 
$ 

Wenn ich Java-Einstellungen verwenden 1.7 zuerst auf die Liste zu setzen, aber lassen 1.6 „auf“ rjava beginnt immer 1,6.

Wenn ich Java-Einstellungen verwenden 1.7 erste und setzen 1,6 auszuschalten, rjava tut dies:

> library(rJava) 
> .jinit() 
JavaVM: requested Java version ((null)) not available. Using Java at "" instead. 
JavaVM: Failed to load JVM: /bundle/Libraries/libserver.dylib 
JavaVM FATAL: Failed to load the jvm library. 
Error in .jinit() : JNI_GetCreatedJavaVMs returned -1 
> 

jedoch die Systemfunktion, R selbst findet Java 1.7.

> system("java -version") 
java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 
> 

Braucht 1.7 einen speziellen Eintrag in /System/Library/Java/JavaConfig.plist?

Muss das Versions-Verzeichnis für 1.7 angepasst werden? Es ist seltsam, dass Strom auf A geht, die mit 1,7 bis endet, während CurrentJDK bis 1,6

$cd /System/Library/Frameworks/JavaVM.framework/Versions/ 
$ls -la 
total 64 
drwxr-xr-x 11 root wheel 374 Sep 26 10:10 . 
drwxr-xr-x 11 root wheel 374 Nov 26 09:24 .. 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.4 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.4.2 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.5 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.5.0 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.6 -> CurrentJDK 
lrwxr-xr-x 1 root wheel 10 Sep 26 10:09 1.6.0 -> CurrentJDK 
drwxr-xr-x 8 root wheel 272 Nov 26 09:24 A 
lrwxr-xr-x 1 root wheel 1 Sep 26 10:09 Current -> A 
lrwxr-xr-x 1 root wheel 59 Sep 26 10:09 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 

Auch mit R CMD abgebildet wird javareconf laufen mit der Weg direkt an die 1,7-Dateien zeigen oder in das Verzeichnis/usr/bin/Java-Pfade, rJava kann Java 1.7 immer noch nicht finden oder starten.

Benötigt 1.7 die JAVA_LD_LIBRARY_PATH-Variable?

Makeconf:JAVA = /usr/bin/java 
Makeconf:JAVAC = /usr/bin/javac 
Makeconf:JAVAH = /usr/bin/javah 
Makeconf:JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre 
Makeconf:JAVA_LD_LIBRARY_PATH = 
Makeconf:JAVA_LIBS = -framework JavaVM 
Makeconf:JAVA_CPPFLAGS = -I$(JAVA_HOME)/include 

Makeconf:JAR = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/bin/jar 
Makeconf:JAVA = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/bin/java 
Makeconf:JAVAC = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/bin/javac 
Makeconf:JAVAH = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/bin/javah 
Makeconf:JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre 
Makeconf:JAVA_LD_LIBRARY_PATH = 
Makeconf:JAVA_LIBS = -framework JavaVM 
Makeconf:JAVA_CPPFLAGS = -I$(JAVA_HOME)/include 

Vielen Dank für jede Hilfe

Update 1:

fragte ich dies auf der Statistik-rosuda-devel Liste und erhielt folgende Antwort von Simon Urbanek. Ich denke nicht, dass Windows und Linux die gleichen Probleme mit der Kompilierung von Source für Java 1.7 haben, da wir dies unter Windows und Linux ausführen und rJava nicht kompilieren müssen. Ich werde berichten, wenn ich eine Chance haben, versuchen Sie dies:

--- Zitat --- beginnen

Sie verwenden den binären, die gegen System Java kompiliert wird (die auf Ihrem System 1.6) - Wenn Sie Java 1.6 entfernen, werden Sie es brechen. Wenn Sie Java 1.7 verwenden möchten, müssen Sie R für Java 1.7 neu konfigurieren und rJava neu kompilieren, um diese Einstellungen zu verwenden. Beachten Sie, dass Oracle Java an einem völlig anderen Ort (/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk) als das System Java (/System/Library/Frameworks/JavaVM.framework) lebt und daher nicht austauschbar ist.

Außerdem ist Oracle Java 1.7 kein Framework, es ist ein großes Durcheinander, das nicht wirklich für OS X entworfen wurde, also muss man es per Hand auf Einstellungen wie auf Linux setzen - es ist ziemlich schmerzhaft. Es erfordert auch Überschreibungen ... also, wenn Sie wirklich das Kaninchen Loch gehen wollen, das ist, was für mich funktionierte:

JAVA_LD_LIBRARY_PATH =/Bibliothek/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Inhalt/Home/jre/lib/server JAVA_LIBS = '- L/Bibliothek/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Inhalt/Home/jre/lib/server -ljvm' JAVA_CPPFLAGS = '- I/Bibliothek/Java/JavaVirtualMachines/jdk1. 7.0_09.jdk/Contents/Home/umfassen -I/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/include/Darwins R64 CMD javareconf

Dann rjava aus Quellen (R64 installieren -> install.packages ("rJava", Typ = 'Quelle')). Beachten Sie, dass es nur 64-Bit ist, so wird es nur mit 64-Bit R.

---- Ende Zitat --- arbeiten

+1

Ich habe hier keinen besonderen Einblick, aber Sie können rJava aus der Quelle installieren, oder versuchen Sie die stats-rosuda-devel Mailingliste. –

+0

Ich habe auf der Liste gefragt und gerade eine Antwort erhalten. Ich füge es zur ursprünglichen Frage oben hinzu. – Tod

+0

Danke für die Aktualisierung mit Simons Antwort. Es ist einfacher zu lesen, wenn es nicht im Code-Format mit seitlichem Scrollen ist. –

Antwort

5

Dies funktioniert für mich:

Die Situation ist, dass mein Java-Verzeichnisse wurden nicht korrekt konfiguriert.

1) Erster Lauf: sudo R CMD javareconf. Es sollte die folgenden:

Java interpreter : /usr/bin/java 
Java version  : 1.7.0_40 
Java home path : /Library/Java/JavaVirtualMachines/jdk1.7.0_40.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 
llvm-gcc-4.2 -arch x86_64 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -fPIC -mtune=core2 -g -O2 -c conftest.c -o conftest.o 
llvm-gcc-4.2 -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation 


JAVA_HOME  : /Library/Java/JavaVirtualMachines/jdk1.7.0_40.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. 

2) In R, laufen: install.packages("rJava",type='source'). Die Installation sollte DONE (rJava) zurückgeben. Beachten Sie, dass hatte ich

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home 

setzen, wenn ich R als root müssen anfangen: sudo R. als normaler Benutzer ausführen zu können, verwenden

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre 

es mir passiert, dass ich nicht festgelegt haben die symbolischen Links des obigen/usr/bin/java * zu den entsprechenden in Java 1.7 (gerichtet auf Version 1.6 statt) und bekamen alle Frustration von dort. Links sollten wie folgt aussehen: (Es sieht so aus, als ob nur Java, Java, Java und Jar in R benötigt werden).

$ ls -l /usr/bin/ja* 
lrwxr-xr-x 1 root wheel 71 Oct 3 11:44 /usr/bin/jar -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/jar 
lrwxr-xr-x 1 root wheel 77 Oct 3 12:14 /usr/bin/jarsigner -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/jarsigner 
lrwxr-xr-x 1 root wheel 72 Oct 3 11:44 /usr/bin/java -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java 
lrwxr-xr-x 1 root wheel 73 Oct 3 11:42 /usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/javac 
lrwxr-xr-x 1 root wheel 75 Oct 3 12:15 /usr/bin/javadoc -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/javadoc 
lrwxr-xr-x 1 root wheel 73 Oct 3 11:44 /usr/bin/javah -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/javah 
lrwxr-xr-x 1 root wheel 73 Oct 3 12:15 /usr/bin/javap -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/javap 
lrwxr-xr-x 1 root wheel 74 Oct 3 12:15 /usr/bin/javaws -> /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/javaws 
+0

# 2 hat mir geholfen, indem ich "type = 'source'" zu meinen install.packages ("rJava", type = 'source') hinzufügte. Ich stieß darauf, während ich versuchte, xlsx Paket zu installieren. – user2771721

1

Schließlich hat etwas funktioniert!

Simon Urbanek: können Sie bitte diese Anweisungen auf der rJava Website/cran install Anweisungen ...? Dies ist das erste Mal, dass ich in diesem Kaninchenloch war und ich bin mir sicher, dass ich nicht der Einzige bin.

JAVA_LD_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/server JAVA_LIBS='-L/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/server -ljvm' JAVA_CPPFLAGS='-I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include/darwin' R CMD javareconf 
Java interpreter : /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/bin/java 
Java version  : 1.8.0_77 
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home 
Java compiler : /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/javac 
Java headers gen.: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/javah 
Java archive tool: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/jar 
System Java on OS X 

trying to compile and link a JNI program 
detected JNI cpp flags : -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include/darwin 
detected JNI linker flags : -L/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/server -ljvm 
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/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/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_77.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_77.jdk/Contents/Home 
Java library path: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/server 
JNI cpp flags : -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/include/darwin 
JNI linker flags : -L/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/server -ljvm 
Updating Java configuration in /Library/Frameworks/R.framework/Resources 
override rw-r--r-- root/admin for /Library/Frameworks/R.framework/Resources/etc/Makeconf? (y/n [n]) y 
override rw-r--r-- root/admin for /Library/Frameworks/R.framework/Resources/etc/ldpaths? (y/n [n]) y 
Done. 

R CMD INSTALL rJava_0.9-9.tar.gz