使 rJava 或 R 使用不同的(以前的)Java 版本

Posted

技术标签:

【中文标题】使 rJava 或 R 使用不同的(以前的)Java 版本【英文标题】:Make rJava or R to use a different (previous) Java version 【发布时间】:2018-03-09 23:44:20 【问题描述】:

似乎最后一个 java 版本使 rJava 无法加载或编译/安装。

有什么方法可以安装 java8 和 java9 并强制 rJava 或 R 使用 java8 版本?


编辑:有人建议这个thread 可能是我的问题的解决方案,但事实并非如此。由于我需要使用较低版本,而不是新版本。似乎可以告诉 R java_home 在哪里,但我不知道如何。

【问题讨论】:

rJava is not picking up the correct Java version的可能重复 它说可能 :) 无论如何,你能尝试把Java8放在前面吗? 你的意思是在系统路径中吗?那么......这不是一个解决方案,因为它就像我只有 java8,不是吗? 【参考方案1】:

看看这里:R, Java, rJava and macOS adventures 和这里:R 3.4, rJava, macOS and even more mess ;)

R、Java 和使每个软件都快乐的适当设置可能是一场斗争;)

您需要使用 JAVA_HOME、R CMD javareconf,有时甚至需要从源代码编译 rJava。

如果您只需要 R 的特定 Java 版本,您可以随时使用类似的东西。

首先,获取JVM列表

/usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    9, x86_64:  "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
    1.8.0_144, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    1.8.0_111, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

然后,在开始 R 之前选择一个

-- start_R_with_Java_8.sh --
#!/bin/bash
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_144)
export PATH=$JAVA_HOME/bin:$PATH
R

这样,在系统中你将拥有 Java 9,而对于 R,你将拥有 1.8。

【讨论】:

非常感谢您的贡献,我想我会为它添加书签以供将来参考,但这不是我正在寻找的确切解决方案。现在,一切看起来都正常运行,但决定卸载 Java9 并重新安装 Java8,他们在该示例中使用的是相同的。我不需要像示例中那样配置很多东西来使 Java8 工作。这里的问题似乎是 rJava 与 Java9 并不真正兼容。出于这个原因,我一直在寻找同时拥有两者的方法,并将较低版本的 R 和更新的版本用于其余的东西。 但是由于必须编辑 JAVA_HOME 才能正确使用 R,因此进行该设置似乎真的很复杂。反过来似乎真的很容易。我的意思是,让 R 使用最后一个版本,并在必要时为其他事情提供更多版本。我也试过 jenv,但似乎与 R 不太兼容。 在这种情况下,我认为您可以确保 JAVA_HOME 指向 Java8(在运行 R 之前)。因此,您可以为 R 创建一个包装脚本,您只需将 JAVA_HOME 设置为 Java 8 并运行 R。对于系统的其余部分,它仍然是 Java 9。此外,您可能需要重新配置 R 以再次使用 Java 8。 这是一个解决方案,如果他们不修复 rJava,我可能会在未来尝试。我已经花了一个下午的时间“玩”这个问题,我真的没有太多时间来解决这个问题。现在,除非出于安全考虑,否则我真的不需要更新到 Java9。

以上是关于使 rJava 或 R 使用不同的(以前的)Java 版本的主要内容,如果未能解决你的问题,请参考以下文章

R - 错误:'rJava' 的 loadNamespace() 中的 .onLoad 失败

R:无法安装 rJava;啥是 r-api-3.4?

怎么安装r语言中的rjava包

R语言中 安装rJava 和Rwordseg

R 安装包遇到问题 loadNamespace()里算'rJava'时.onLoad失败了 rJava 包的安装与载入

R与java整合