使 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 失败