¿Cómo hacer que rJava 0.9-3 funcione en OS X 10.7.4 con Oracle Java 1.7?

¿Hay alguien por ahí que haya logrado que rJava 0.9-3 funcione en OS X 10.7.4 con 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)

Instalé rJava utilizando la función install.packages y la línea de comandos con R 2.15.2. No me sale ningún error.

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

* DONE (rJava)
$ 

Si utilizo las Preferencias de Java para poner 1.7 primero en la lista, pero dejo 1.6 "encendido", rJava siempre comienza con 1.6.

Si uso las Preferencias de Java para poner 1.7 primero y desactivar 1.6, rJava hace esto:

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

Sin embargo, utilizando la función del sistema, R encuentra 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)
> 

¿Necesita 1.7 una entrada especial en /System/Library/Java/JavaConfig.plist?

¿El directorio de versiones necesita ajustes para 1.7? Es extraño que la Corriente vaya a A, que termina con 1.7 mientras que CurrentJDK se asigna a 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

Incluso con R CMD javareconf ejecutado con la ruta que apunta a los archivos 1.7 directamente o a las rutas / usr / bin / java, rJava aún no puede encontrar o iniciar Java 1.7.

¿Necesita 1.7 el conjunto de variables 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

Gracias por cualquier ayuda

Actualización 1:

Pregunté esto en la lista de stats-rosuda-devel y recibí la siguiente respuesta de Simon Urbanek. No creo que Windows y Linux tengan los mismos problemas con la necesidad de compilar desde la fuente para Java 1.7, ya que estamos ejecutando esto en Windows y Linux y no tenemos que compilar rJava. Informaré una vez que tenga la oportunidad de probar esto:

Estas usando elbinario que se compila contra el sistema Java (que en su sistema es 1.6), así que si elimina Java 1.6 lo romperá. Si desea usar Java 1.7, tendrá que volver a configurar R para Java 1.7 y volver a compilar rJava para usar esas configuraciones. Tenga en cuenta que Java de Oracle se encuentra en un lugar completamente diferente (/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk) que el sistema Java (/System/Library/Frameworks/JavaVM.framework), por lo que no es intercambiable.

Además, Oracle Java 1.7 no es un marco, es un gran lío que no fue realmente diseñado para OS X, por lo que debe configurarlo a mano en configuraciones como en Linux, es bastante doloroso. También requiere anulaciones ... así que si realmente quieres ir por el agujero del conejo, esto es lo que funcionó para mí:

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

Luego instale rJava desde las fuentes (R64 -> install.packages ("rJava", type = 'source')). Tenga en cuenta que solo es de 64 bits, por lo que solo funcionará con 64 bits de R.

Respuestas a la pregunta(2)

Su respuesta a la pregunta