rJava出了名的难装,一大堆问题。

核心的问题:

1. java版本问题,最好用1.8版本的java

2. 编译器的问题

3. 相关头文件header的问题

之前几次装过,但都放弃了,这次花了一下午终于搞定了。

对于MacOS,首先就是要配置好Java的环境,brew装java1.8

brew cask install java8 已经失效,无法安装。

参见这里,可以装另一个版本。

brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk8

然后需要管理java的环境

brew install jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/
jenv global openjdk64-1.8.0.222

然后就是配置R的java环境,这一步必须要成功,否则后面无法进行

R CMD javareconf

大坑:java不是1.8或者java版本太老不对,这一步都会报错,总之就是用brew不断去试不同版本的java,直到成功。

最后就是装rJava了

CC="/usr/local/opt/llvm/bin/clang -fopenmp" R --quiet -e 'install.packages("rJava", type="source", repos="http://cran.us.r-project.org")'

大坑:CC就是指定编译器,因为R会莫名其妙的用最老的clang来编译,那肯定会报错,其次后面的参数也必须添加。主要是这两个坑,后面源码安装。

最后的最后,如果在rstudio或jupyter里用rJava,还需要指定一下Java的位置,以便找到动态链接文件:

Sys.setenv(JAVA_HOME='/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home') 

总结:java一定要装对,最好配一个java多版本的管理软件,其次需要先配置R的java环境,最后就是用合适的编译器来源码安装。(做错任意一步都会导致rJava安装报错)

这个本来就是个版本混乱、多语言互斥的问题:

Java牛逼,导致大部分其他语言想调用它的功能;

Java永远在不断更新,其他调用它的包的代码也必须持续更新,所以良好的向下兼容是必须的;

关于编译器和头文件:

需要安装最新版的xcode,然后建立header文件的软链接

/usr/local/opt/llvm/include
/Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

  

最新文章

  1. 【转】JavaScript之web通信
  2. 请求一个action,将图片的二进制字节字符串在视图页面以图片形式输出
  3. DIV_ROUND_UP(x,y)实现x/y向上取整
  4. Javascript原型链
  5. Linux C/C++ 编程练手 --- 大数相加和大数相乘
  6. java虚拟机总结
  7. Ext.Ajax.request
  8. AJAX初识(原生JS版AJAX和Jquery版AJAX)
  9. codeforces 493 div1 e
  10. sql生成连续日期(年份、月份、日期)
  11. poj3889
  12. js 时间戳转时间工具类 js时间戳与时间互转
  13. Liunx touch
  14. shell实现linux回收站的功能
  15. 大数据 -- Spark
  16. Spring面试问题集锦
  17. git分支的相关问题
  18. 可视化库-Matplotlib-3D图(第四天)
  19. github上关于campbell数据采集的一些代码。
  20. Gradle2.0用户指南翻译——第一章. 介绍

热门文章

  1. FFmpeg参考资料合集(会一直更新)
  2. Synchronized可重入锁分析
  3. Java 读取控制台输入
  4. 动态渲染左侧菜单栏 :menu tree 动态渲染
  5. MySQL/MariaDB数据库的主从级联复制
  6. Cloudera Manager 5.15.1忘记密码怎么破?
  7. 使用Arduino开发板和ESP8266从互联网读取数据
  8. zookeeper题目
  9. Beta冲刺(1/7)——2019.5.22
  10. onreadystatechange和onload区别分析