Czy jest ktoś, komu udało się uzyskać rJava 0.9-3 do pracy z OS X 10.7.4 z Oracle Java 1.7?jak uzyskać rJava 0.9-3 do pracy z OS X 10.7.4 z Oracle Java 1.7?
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)
Zainstalowałem rJava przy użyciu zarówno funkcji install.packages, jak i instalacji wiersza poleceń przy pomocy wersji 2.15.2. Nie dostaję żadnych błędów.
$ R CMD INSTALL rJava
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘rJava’ ...
* DONE (rJava)
$
Jeśli używam Preferencje Java 1.7 postawić pierwszy na liście, ale pozostawić 1.6 "on", rJava zawsze rozpoczyna 1.6.
Jeśli używam Preferencje Java 1.7 postawić pierwsze i wyłącz 1,6, rJava robi to:
> 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
>
Jednakże, używając funkcji systemowej, R sama znajdzie 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)
>
Czy 1.7 potrzebuje specjalnego wpisu w /System/Library/Java/JavaConfig.plist?
Czy katalog wersji wymaga zmiany na 1.7? To dziwne, że bieżący idzie do A, która kończy się z 1,7 podczas CurrentJDK jest mapowany do 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
Nawet R CMD javareconf uruchomić ze ścieżką wskazując na 1,7 plików bezpośrednio lub/usr/bin/ścieżki Java, rJava nadal nie może znaleźć ani uruchomić Java 1.7.
Czy 1.7 potrzebuje zestawu zmiennych JAVA_LD_LIBRARY_PATH?
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
Dzięki za wszelką pomoc
Update 1:
poprosiłem to na liście statystyki-rosuda-devel i otrzymał następującą odpowiedź od Simona Urbanek. Nie uważam, że Windows i Linux mają takie same problemy z kompilacją ze źródła dla Javy 1.7, ponieważ uruchamiamy to w systemach Windows i Linux i nie musieliśmy kompilować rJavy. Będę zgłosić się raz mam okazję spróbować tego:
--- rozpocząć cytatu ---
Używasz binarny który jest skompilowany z systemem Java (który jest w systemie 1.6) - więc jeśli usuniesz Javę 1.6, przerwiesz ją. Jeśli chcesz korzystać z Javy 1.7, musisz ponownie skonfigurować R dla Javy 1.7 i ponownie skompilować rJava, aby użyć tych ustawień. Zauważ, że Java Oracle żyje w zupełnie innym miejscu (/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk) niż systemowa Java (/System/Library/Frameworks/JavaVM.framework), więc nie jest wymienna.
Co więcej, Oracle Java 1.7 nie jest frameworkiem, jest wielkim bałaganem, który nie był tak naprawdę zaprojektowany dla OS X, więc musisz ustawić go ręcznie na takie ustawienia jak na Linuksie - to dość bolesne. Wymaga to także przesłonięć ... więc jeśli naprawdę chcesz zejść z króliczej dziury, to zadziałało dla mnie:
JAVA_LD_LIBRARY_PATH =/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Spis treści/Strona główna/jre/lib/server JAVA_LIBS = '- L/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/server -ljvm' JAVA_CPPFLAGS = '- I/Library/Java/JavaVirtualMachines/jdk1. 7.0_09.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Spis treści/Strona główna/include/darwin 'R64 CMD javareconf
Następnie zainstaluj rJava ze źródeł (R64 -> install.packages ("rJava", type = 'source')). Należy pamiętać, że to tylko 64-bitowe, więc będzie pracować tylko z 64-bitowym R.
---- Koniec cytatu ---
Nie mam tutaj żadnego szczególnego wglądu, ale możesz zainstalować rJava ze źródła lub wypróbować listę mailingową stats-rosuda-devel. –
Zrobiłem pytanie na liście i właśnie otrzymałem odpowiedź. Dodam go do pierwotnego pytania powyżej. – Tod
Dziękuję za aktualizację tego z odpowiedzią Simona. Łatwiej jest odczytać, jeśli nie jest on w formacie kodu z przewijaniem bocznym. –