2012-11-28 91 views
7

有沒有人設法讓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.

----結束報價工作---

+1

我沒有任何特別的見解在這裏,但你可能想從源碼安裝rJava,或嘗試的統計數據,rosuda-devel郵件列表。 –

+0

我在列表中詢問並剛剛收到答案。我將它添加到上面的原始問題。 – Tod

+0

感謝您使用Simon的答案進行更新。如果它不是橫向滾動的代碼格式,則更容易閱讀。 –

回答

5

這個工作對我來說:

的情況是,我的Java目錄未正確配置。

1)首次運行:sudo R CMD javareconf。它應該如下:

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)在R,運行:install.packages("rJava",type='source')。安裝應該返回DONE(rJava)。需要注意的是,我必須設置

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

,當我需要啓動R作爲根:須藤R.要運行作爲普通用戶,使用

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

它發生在我身上,我沒有設置上面的/ usr/bin/java *到Java 1.7中相應的符號鏈接(改爲1.6版本),並從那裏獲得了所有的挫敗感。鏈接應該是這樣的:(它看起來只有java,javac,javah和jar在R中是必需的)。

$ 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幫助我,特別是通過向我的install.packages(「rJava」,type ='source')添加「type ='source'」。我試圖安裝xlsx軟件包時遇到了這個問題。 – user2771721

1

最後,一些工作!

Simon Urbanek:你能把這些指示放在rJava網站上嗎/ cran安裝說明......?這是我第一次放下這個兔子洞,我敢肯定我不是唯一一個。

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 
相關問題