在 macOS Mavericks 10.9.5 上安装 xlsx 和 rJava

7

我很难在我的 Mac 上安装 rjava。

我的设置:

MacOS 10.9.5
Java: 7u71 (64 bits dowloaded from Oracle site)
R: R version 3.1.1 (2014-07-10)

首先,在命令行中我运行了以下指令:

sudo R CMD javareconf

然后,我进入了R:

install.packages('rJava')

编译结束时出现的错误如下:
JavaVM -F/opt/local/Library/Frameworks/R.framework/.. -framework R -llzma -lm -liconv -licuuc -licui18n
ld: library not found for -licuuc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’
* removing ‘/Users/costa/Library/R/3.1/library/rJava’

我尝试了Java 8和Mac默认的Java,但是都遇到了相同的错误。 有什么想法吗?

我相信我必须安装雪豹版本,它可以正常工作。 - rawr
我尝试使用这个版本:http://support.apple.com/kb/dl1573 但是我无法安装(我的 Mac 是 10.9.5 版本)。 - Menthor
openxlsx 是一个不依赖于 Java 的好选择。https://github.com/cran/openxlsx - James
6个回答

4

我使用macports R以root身份(sudo bash)执行了以下操作:

  • edit /opt/local/Library/Frameworks/R.framework/Resources/etc/Makeconf and change the line

    LIBS =  -llzma -lm -liconv -licuuc -licui18n
    

    to

    LIBS =  -llzma -lm -liconv
    
  • install the original 1.6 Mac Java

  • export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

  • run R CMD javareconf

现在您可以启动R并执行install.packages("rJava")。使用Java 1.6版本确保了RStudio也能加载rJava包。
如果您不打算使用RStudio,也可以使用Java 1.8版本。

只需要更改Makeconf文件中的标志,就可以为我工作!此外,您可能需要使用sudo运行R CMD javareconf - Jan Sila

1

我实际上可以通过使用Mac二进制文件在我的Macbook上安装rJava(运行OSX Yosemite和R版本3.2.3),而完全避免编辑我的环境。首先,在R中执行以下操作以安装rJava:

install.packages("rJava", type = "mac.binary")

可能与此无关,但出于某种原因,我在未安装xlsxjars依赖项之前无法安装xlsx。因此,请在R中执行以下操作:

install.packages(c("xlsxjars", "xlsx"))

通过这两个命令,在Mac上似乎可以成功安装xlsx!


1
这对我起作用了:

sudo R CMD javareconf

然后,在R解释器中:
install.packages('rJava', type='source')
install.packages('xlsx', type='source')

我在这个阶段无法编译rJava:install.packages('rJava', type='source')。 - Johnny V

1

我在我的电脑上(Mac OS 10.9.5、Java 1.8.0_11、R 3.1.1)遇到了同样的错误。从Oracle安装最新的Java JDK(1.8.0_25)没有解决问题(尚未)。然而,在更新Java之后,安装R 3.1.2解决了我的问题。运行install.packages("rJava")后,这个命令可以工作:

> library("rJava")
> .jinit() # this starts the JVM
> s <- .jnew("java/lang/String", "Hello World!")
> .jcall(s,"I","length")
[1] 12

请注意,更新JDK与通过系统偏好设置访问的GUI Java控制面板中的Java版本是不同的。后者仅为Internet浏览器插件的JRE。

0

使用旧版的Java SE 6,我可以通过运行以下命令来编译rJava:

JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home \
JAVA_CPPFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/ \
r CMD javareconf

0

我也遇到了同样的问题。我使用的是OS X Yosemite,最初是通过homebrew安装R的。

我执行了以下步骤来解决它:

  1. 关闭所有R实例
  2. 在我的终端shell中运行sudo R CMD javareconf
  3. 从我的终端打开R并运行:

    install_packages("rJava")

    install_packages("xlsx")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接