有沒有人設法讓rJava 0.9-3在Oracle Java 1.7上使用OS X 10.7.4?如何讓rJava 0.9-3在Oracle Java 1.7中使用OS X 10.7.4?
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)
我同時使用install.packages函數和命令行有R 2.15.2安裝安裝rJava。我沒有得到任何錯誤。
$ R CMD INSTALL rJava
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘rJava’ ...
* DONE (rJava)
$
如果我用Java首放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?它是奇怪的是電流變爲A,其中當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中運行具有1.7結束/ 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:
我問這個的統計數據,rosuda-devel的列表上,並收到了來自西蒙Urbanek以下響應。我不認爲Windows和Linux有需要編譯Java 1.7的源代碼的問題,因爲我們在Windows和Linux上運行它,不需要編譯rJava。我馬上彙報一次我有機會嘗試這個辦法:
---開始報價---
您使用的是二進制其中是對系統的Java(這在您的系統是1.6編譯) - 所以如果你刪除Java 1.6你會打破它。如果您想使用Java 1.7,則必須重新配置R for Java 1.7並重新編譯rJava以使用這些設置。需要注意的是Oracle的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 /內容/首頁/包括-I /圖書館/的Java/JavaVirtualMachines/jdk1.7.0_09.jdk /內容/首頁/包括/達爾文R64 CMD javareconf
然後從源(R64安裝rJava - > install.packages ( 「rJava」,類型= '源'))。請注意,這只是64位,因此它只能與64位R.
----結束報價工作---
我沒有任何特別的見解在這裏,但你可能想從源碼安裝rJava,或嘗試的統計數據,rosuda-devel郵件列表。 –
我在列表中詢問並剛剛收到答案。我將它添加到上面的原始問題。 – Tod
感謝您使用Simon的答案進行更新。如果它不是橫向滾動的代碼格式,則更容易閱讀。 –