2012-11-28 25 views
7

Có ai ngoài đó đã quản lý để có được rJava 0.9-3 để làm việc trên OS X 10.7.4 với Oracle Java 1.7 không?làm thế nào để có được rJava 0.9-3 để làm việc trên OS X 10.7.4 với 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) 

Tôi đã cài đặt rJava sử dụng cả hàm install.packages và cài đặt dòng lệnh với R 2.15.2. Tôi không nhận được bất kỳ lỗi nào.

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

* DONE (rJava) 
$ 

Nếu tôi sử dụng Java Preferences để đưa 1,7 đầu tiên trong danh sách, nhưng để lại 1,6 "on", rJava luôn bắt đầu 1.6.

Nếu tôi sử dụng Java Preferences để đưa 1,7 đầu tiên và tắt 1.6, rJava thực hiện điều này:

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

Tuy nhiên, bằng cách sử dụng chức năng hệ thống, R tự tìm thấy 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) 
> 

Có 1,7 cần mục nhập đặc biệt trong /System/Library/Java/JavaConfig.plist?

Thư mục Phiên bản có cần tinh chỉnh cho 1,7 không? Nó là lạ rằng hiện tại đi đến A, mà kết thúc với 1,7 trong khi CurrentJDK được ánh xạ tới 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 

Ngay cả với R CMD javareconf chạy với đường dẫn trỏ đến 1,7 file trực tiếp hoặc đến/usr/bin/java đường dẫn, rJava vẫn không thể tìm thấy hoặc bắt đầu Java 1.7.

1,7 có cần biến JAVA_LD_LIBRARY_PATH không?

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 

Nhờ sự giúp đỡ

Cập nhật 1:

Tôi hỏi này thuộc danh mục số liệu thống kê-rosuda-devel và nhận được câu trả lời sau đây từ Simon Urbanek. Tôi không nghĩ rằng Windows và Linux có cùng một vấn đề với cần biên dịch từ nguồn cho Java 1.7, kể từ khi chúng tôi đang chạy này trên Windows và Linux và không phải biên dịch rJava. Tôi sẽ báo cáo lại khi tôi có cơ hội để thử điều này:

--- bắt đầu quote ---

Bạn đang sử dụng nhị phân được biên dịch chống lại hệ thống Java (mà trên hệ thống của bạn là 1,6) - vì vậy nếu bạn loại bỏ Java 1.6 bạn sẽ phá vỡ nó. Nếu bạn muốn sử dụng Java 1.7, bạn sẽ phải cấu hình lại R cho Java 1.7 và biên dịch lại rJava để sử dụng các thiết lập đó. Lưu ý rằng Java của Java sống ở một nơi hoàn toàn khác (/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk) so với hệ thống Java (/System/Library/Frameworks/JavaVM.framework), vì vậy nó không thể thay thế được. Ngoài ra, Oracle Java 1.7 không phải là một khuôn khổ, nó là một mớ hỗn độn lớn mà không thực sự được thiết kế cho OS X, vì vậy bạn phải thiết lập nó bằng tay cho các thiết lập như trên Linux - nó khá đau đớn. Ngoài ra nó yêu cầu ghi đè ... vì vậy nếu bạn thực sự muốn đi xuống hố thỏ, đây là những gì làm việc cho tôi:

JAVA_LD_LIBRARY_PATH =/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Nội dung/Trang chủ/jre/lib/server JAVA_LIBS = '- L/Thư viện/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Nội dung/Trang chủ/jre/lib/server -ljvm' JAVA_CPPFLAGS = '- I/Thư viện/Java/JavaVirtualMachines/jdk1. 7,0_09.jdk/Nội dung/Trang chủ/bao gồm -I/Thư viện/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Nội dung/Trang chủ/bao gồm/darwin 'R64 CMD javareconf

Sau đó cài đặt rJava từ nguồn (R64 -> install.packages) ("rJava", gõ = 'nguồn')). Lưu ý rằng nó là 64-bit chỉ, vì vậy nó sẽ chỉ làm việc với 64-bit R.

---- cuối quote ---

+1

Tôi không có bất kỳ thông tin chi tiết cụ thể nào ở đây, nhưng bạn có thể muốn cài đặt rJava từ nguồn hoặc thử danh sách gửi thư thống kê-rosuda-devel. –

+0

Tôi đã yêu cầu trên danh sách và vừa nhận được câu trả lời. Tôi sẽ thêm nó vào câu hỏi gốc ở trên. – Tod

+0

Cảm ơn bạn đã cập nhật điều đó với câu trả lời của Simon. Sẽ dễ đọc hơn nếu nó không ở định dạng mã với cuộn ngang. –

Trả lời

5

này làm việc cho tôi:

Tình hình là tôi Các thư mục Java không được cấu hình đúng.

1) Lần chạy đầu tiên: sudo R CMD javareconf. Cần thực hiện như sau:

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) Trong R, chạy: install.packages("rJava",type='source'). Cài đặt sẽ trả về DONE (rJava). Lưu ý rằng, tôi đã phải thiết lập

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

khi tôi cần phải bắt đầu R là root: sudo R. Để chạy như một người dùng bình thường, sử dụng

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

Nó đã xảy ra với tôi rằng tôi không đặt các liên kết tượng trưng của/usr/bin/java * ở trên tương ứng với Java 1.7 (chuyển sang phiên bản 1.6 thay thế) và nhận được tất cả sự thất vọng từ đó. Liên kết phải như thế này: (có vẻ như chỉ java, javac, javah và jar được yêu cầu trong 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 đã giúp tôi, đặc biệt bằng cách thêm "type = 'source'" vào install.packages của tôi ("rJava", type = 'source'). Tôi chạy vào trong khi cố cài đặt gói xlsx. – user2771721

1

Cuối cùng, điều gì đó đã hiệu quả!

Simon Urbanek: bạn có thể vui lòng đặt các hướng dẫn này trên trang web rJava/hướng dẫn cài đặt cran ...? Đây là lần đầu tiên tôi xuống hố thỏ này và tôi chắc chắn tôi không phải là người duy nhất.

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 
Các vấn đề liên quan