MAC安装rJava混乱问题

报错如下:

configure: error: Cannot compile a simple JNI program. See config.log for details.
Make sure you have Java Development Kit installed and correctly registered in R.
If in doubt, re-run "R CMD javareconf" as root.
ERROR: configuration failed for package ‘rJava’ * removing ‘/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava’ * restoring previous ‘/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava’

主要原因是R,rJava, Java, macOS的内部混乱。当Java遇到了MAC OS,就注定会发生混乱。首先,你需要明白,MAC里的Java有两个版本:Oracle based 或system based。

  1. Java framework reside:
    /System/Library/Frameworks/JavaVM.framework
  2. Oracle based Java will be installed:
    /Library/Java/JavaVirtualMachines

所以说,如果你想在R中合理的配置JAVA,你就必须做一些调整。首先,你必须配置Java_home。

/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.0_11, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

但是,如果你想在R中用JDK,就会遇到bug了。首先,在R中运行Java:

sudo R CMD javareconf

由于javareconf认定只要你的java_home和"/Home"匹配,就会默认用系统中的java,而不是oracle的java。这时事情就会变得很奇怪了,一半是JDK,一半是苹果系统中的JVM。所以,为了避免这个问题,你需要创造“伪路径”,即没有"/Home$"字符的路径。

cd /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents
ln -s Home RHome

然后, 你将其输出为Java_home

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/RHome

然后,用以下命令配置javareconf

sudo R CMD javareconf
JAVA_HOME={JAVA_HOME} \ JAVA={JAVA_HOME}/bin/java
JAVAC={JAVA_HOME}/bin/javac \ JAVAH={JAVA_HOME}/bin/javah
JAR={JAVA_HOME}/bin/jar \ JAVA_LD_LIBRARY_PATH={JAVA_HOME}/jre/lib/server
JAVA_CPPFLAGS="-I{JAVA_HOME}/include -I{JAVA_HOME}/include/darwin"

现在你就可以测试rJava了。下载rJava包,从source手动配置它。

curl https://cran.r-project.org/src/contrib/rJava_0.9-8.tar.gz -o rJava_0.9-8.tar.gz
tar zxf rJava_0.9-8.tar.gz
cd rJava
./configure

如果通过了,打开R,安装包

install.packages("rJava", type="source")

注意:如果由于Java安装太乱了(Apple’s JREs, Oracle’s JDKs),你需要先设置java的环境。这可能需要更新文件

/usr/libexec/java_home/../Info.plist

如果你想修改文件,就用你喜欢的修改工具吧~

sudo vi /usr/libexec/java_home/../Info.plist

要确认JVM可以处理JNI,你需要将如下:

<key>JVMCapabilities</key>
<array>
<string>CommandLine</string>
</array>

更换成:

<key>JVMCapabilities</key>
<array>
<string>CommandLine</string>
<string>JNI</string>
</array>

注:本帖搬运自http://www.owsiak.org/r-java-rjava-and-macos-adventures/,翻译由于时间关系有点捉急,建议大家看原博客。

关于MAC党的java问题,这个帖子可以说一帖封神了吧。

附上JDK的下载地址:https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容