首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OracleJava1.7使rJava 0.9-3在OSX10.7.4上工作?

如何使用OracleJava1.7使rJava 0.9-3在OSX10.7.4上工作?
EN

Stack Overflow用户
提问于 2012-11-28 16:53:38
回答 2查看 9.2K关注 0票数 7

有没有人在OracleJava1.7中成功地让rJava 0.9-3在OSX10.7.4上工作呢?

代码语言:javascript
复制
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)

我使用rJava函数和命令行安装了R2.15.2,安装了install.packages。我没有任何错误。

代码语言:javascript
复制
$ R CMD INSTALL rJava
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘rJava’ ...

* DONE (rJava)
$ 

如果我使用将1.7放在列表的第一位,但保留1.6 " on ",rJava总是从1.6开始。

如果我使用将1.7放在首位并关闭1.6,rJava会这样做:

代码语言:javascript
复制
> 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本身就可以找到Java1.7。

代码语言:javascript
复制
> 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,A值为1.7,而CurrentJDK映射为1.6

代码语言:javascript
复制
$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

即使在rJava运行时,路径直接指向1.7个文件或指向/usr/bin/java路径,rJava仍然无法找到或启动Java1.7。

1.7需要JAVA_LD_LIBRARY_PATH变量集吗?

代码语言:javascript
复制
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发展列表上问了这个问题,并收到了西蒙厄班克的回复。我不认为Windows和Linux在需要从源代码编译Java1.7时有相同的问题,因为我们在Windows和Linux上运行这个程序,并且不需要编译rJava。一旦我有机会尝试,我会向你汇报:

您使用的是针对system编译的二进制文件(在您的系统上是1.6),所以如果删除Java1.6,就会破坏它。如果要使用Java1.7,则必须重新配置RforJava1.7并重新编译rJava以使用这些设置。请注意,Oracle的(/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk)与system (/System/Library/Frameworks/JavaVM.framework),的位置完全不同,因此它是不可互换的。 此外,Oracle Java 1.7不是一个框架,它是一个很大的混乱,并不是真正为OS设计的,所以您必须手动将它设置为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/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/include/darwin’R64 R64 javareconf 然后从源安装rJava (R64 -> install.packages("rJava",type=‘source“))。请注意,它只适用于64位,所以它只适用于64位R。

EN

回答 2

Stack Overflow用户

发布于 2013-10-03 05:18:09

这对我来说很管用:

情况是我的Java目录配置不正确。

1)第一次运行:sudo R CMD javareconf。它应采取以下措施:

代码语言:javascript
复制
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中,run:install.packages("rJava",type='source')。安装应该返回完成(RJava)。注意,我必须设置

代码语言:javascript
复制
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

当我需要以root用户的身份启动R时: sudo .要作为普通用户运行,请使用

代码语言:javascript
复制
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre

对我来说,我没有将上面/usr/bin/ Java *的符号链接设置为Java1.7中相应的链接(相反,指向1.6版本),并因此而感到沮丧。链接应该如下所示:(在R中只需要java、javac、javah和jar )。

代码语言:javascript
复制
$ 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
票数 5
EN

Stack Overflow用户

发布于 2016-08-25 22:11:50

终于有什么办法了!

Simon :请您将这些说明放在rJava网站/ cran安装说明上.?这是我第一次进这个兔子洞,我肯定我不是唯一一个。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13610293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档