как заставить rJava 0.9-3 работать на OS X 10.7.4 с Oracle Java 1.7?

Есть ли кто-нибудь, кому удалось заставить rJava 0.9-3 работать на OS X 10.7.4 с 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)

мы установили rJava, используя как функцию install.packages, так и установку из командной строки с помощью R 2.15.2. Я нене получить никаких ошибок.

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

* DONE (rJava)
$ 

Если я использую Java Preferences, чтобы поставить 1.7 первым в списке, но оставить 1.6 "на", rJava всегда запускается 1.6.

Если я использую настройки Java, чтобы сначала установить 1.7 и выключить 1.6, rJava сделает это:

> 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
> 

Однако, используя системную функцию, R сам находит 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)
> 

Нужна ли 1.7 специальная запись в /System/Library/Java/JavaConfig.plist?

Нужно ли подправлять каталог версий для 1.7? Странно, что Current идет к A, который заканчивается на 1.7, а CurrentJDK отображается на 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

Даже если R CMD javareconf работает с путем, указывающим на файлы 1.7 напрямую или на пути / usr / bin / java, rJava все еще может 'найти или запустить Java 1.7.

1.7 нужен ли набор переменных 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

Спасибо за любую помощь

Обновление 1:

Я спросил об этом в списке stats-rosuda-devel и получил следующий ответ от Саймона Урбанека. Я неЯ думаю, что Windows и Linux имеют одинаковые проблемы с необходимостью компиляции из исходного кода для Java 1.7, так как мызапустить это на Windows и Linux и ненужно компилировать rJava. Я'Я сообщу, как только у меня будет возможность попробовать это:

Вы используетедвоичный который скомпилирован с системой Java (которая в вашей системе 1.6) - так что если вы удалите Java 1.6, вы 'сломаю это. Если вы хотите использовать Java 1.7, вы 'Придется переконфигурировать R для Java 1.7 и пересобрать rJava, чтобы использовать эти настройки. Обратите внимание, что Oracle 's Java живет в совершенно другом месте (/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk), чем системная Java (/System/Library/Frameworks/JavaVM.framework), поэтому она не взаимозаменяема.

Кроме того, Oracle Java 1.7 не является основой, этоЭто большой беспорядок, который на самом деле не был разработан для OS X, поэтому вы должны установить его вручную, как в Linux - этодовольно больно. Также это требует переопределений ... так что, если вы действительно хотите пройти по кроличьей норе, вот что сработало для меня:

JAVA_LD_LIBRARY_PATH=/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/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/Contents/Home/include/darwin'
R64 CMD javareconf

Затем установите rJava из исходников (R64 -> install.packages (»rJava», Тип =»источник')). Обратите внимание, что этоs только 64-битный, поэтому он будет работать только с 64-битным R.

Ответы на вопрос(2)

Ваш ответ на вопрос