2015-01-25 13 views
8

Tôi đã đấu tranh với vấn đề này trong một thời gian. Khi tôi cài đặt rJava từ R, phải mất Java 1.6 thay vì 1.8. Tôi đang sử dụng MAC OS 10.8.5 và đây là các bước mà tôi đã thực hiện.rJava không chọn đúng phiên bản Java

Tôi đã cài đặt R.
Tôi có cả Java 1.6 và 1.8 trên máy của mình.
Tôi đã định cấu hình lại R từ thiết bị đầu cuối bằng cách sử dụng: sudo R CMD javareconf -n.
Đây là những gì đầu ra trông giống như:

 
Java interpreter : /usr/bin/java 
Java version  : 1.8.0_25 
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_25.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 

cố gắng để biên dịch và liên kết một progam JNI

 
detected JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin 
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm 
gcc -arch x86_64 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include -fPIC -mtune=core2 -g -O2 -c conftest.c -o conftest.o 
gcc -arch x86_64 -std=gnu99 -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 -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_25.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_25.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 

Sau đó, tôi tiếp tục nghiên cứu và cài đặt rJava gói như nguồn như thế này: install.packages("rJava", type="source") và tôi nhận được DONE(rJava)

sau đó khi tôi kiểm tra phiên bản sử dụng:

 
library(rJava) 
.jinit() 
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version") 

tôi vẫn nhận được 1.6.0_25-b17 thay vì 1.8

Xin vui lòng cho tôi biết nếu bạn biết giải pháp này.

+1

Bạn đã thử 'các tùy chọn (java.home ="/path/to/java ")'? –

+1

'javareconf -n' không làm gì cả -' -n' yêu cầu không thực hiện bất kỳ thay đổi nào (xem tài liệu R) –

Trả lời

8

Phiên bản mới nhất của rJava đã khắc phục sự cố này. Tôi đã cài đặt phiên bản mới nhất từ ​​site sử dụng lệnh

install.packages("rJava",,"http://rforge.net/",type="source")

Bây giờ đầu ra bằng cách gọi JVM là như:

> library(rJava) 
> .jinit() 
> .jcall("java/lang/System", "S", "getProperty", "java.runtime.version") 
[1] "1.7.0_75-b13" 

Lưu ý: Tôi có java 1.7 và 1.6 được cài đặt, và không java 1.8

+0

Nếu bạn đang sử dụng gói và không muốn gặp rắc rối với kho lưu trữ bên ngoài, tôi khuyên bạn nên làm như vậy nhưng sử dụng repo chính thức của CRAN 'install.packages (" rJava ",," http://cran.r-project.org ", type =" source ")' – Mikolaj

Các vấn đề liên quan