正确安装和配置 openJDK 和 R

正确安装和配置 openJDK 和 R

我对 Ubuntu 还比较陌生,所以我不知道很多可能对你们很多人来说都是标准的命令。我正在尝试设置 R 以及安装所需的 Java 依赖项,例如 JGR、rjava 等。我阅读了不少说明来做到这一点,但不知何故我一定做错了什么。以下是 R 和 Java 的状态:

R --version

R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)

java -version

java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

R CMD javareconf

Java interpreter : /usr/bin/java
Java version     : 1.6.0_23
Java home path   : /usr/lib/jvm/java-6-openjdk/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Java library path: /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib
JNI linker flags : -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm
JNI cpp flags    : 

但是当我尝试在 R 中安装“JavaGD”(它是 JGR 的依赖项)时,我得到了:

...
checking Java support in R... present:
interpreter : '/usr/bin/java'
cpp flags   : ''
java libs   : '-L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm'
configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.
...

任何帮助都将不胜感激。谢谢!

答案1

我不熟悉 R,但根据您的控制台,似乎 R 需要 JDK,而您的默认 JAVA 主变量是 JRE。我建议您确保已安装 JDK 或安装它(sudo apt-get install openjdk-6-jdk)。
还要确保您的 JAVA_HOME 环境变量指向 JDK 而不是 JRE(您可以在输出中看到当前Java 主路径被设定为/usr/lib/jvm/java-6-openjdk/jre

答案2

不应盲目安装openjdk-6-jdk。对我有帮助的是更改 Java 版本。幸运的是,有一个很好的 Ubuntu 工具可以做到这一点:

sudo update-alternatives --config java

您可以在那里看到系统中已经有哪些 Java,并设置所需的 Java。然后安装其中一个openjdk-7-jdkopenjdk-6-jdk两个(或两者)

仅有的然后运行

sudo R CMD javareconf

有关 Java 选择的更多详细信息,请参阅Ubuntu 社区维基

PS 对于从 Google 来到这里的人:除其他事项外,这篇文章还有助于解决 R 中 rj 安装的问题,并显示错误消息:R is not configured with full Java support. Please make sure an JDK is installed and run R CMD javareconf。当我这样做时,它显示:NOTE: Your JVM has a bogus java.library.path system property!。所以:不需要弄乱 Java 的库路径!

答案3

以 root 身份运行 R CMD javareconf

意味着您必须使用 sudo 来发出命令:

sudo R CMD javareconf

系统将要求您输入密码(您的普通用户密码)。

答案4

是的,更新替代方案最方便链接维护不同 JVM 版本的机制 - 甚至来自不同的提供商,如 Oracle / OpenJDK。我愿意接受纠正,但我想说的是,对于 R 设置,不仅需要一个 JVM,还需要一个 JDK。

R JAVA配置准备概要如下:

  1. 确保所需的 JVM 正确位于/usr/lib/jvm
  2. 设置链接使用update-alternatives --installR 所需的每个 JAVA 命令
  3. 用于update-alternatives --configure选择默认 JVM
  4. 刷新 R 配置

为了确保 JDK 已位于正确的位置,请使用以下命令查询已安装的 JVM 列表

ls /usr/lib/jvm

如果文件夹不包含 JDK,则使用以下命令将整个 JVM 文件夹从解压tar.gz(下载)重新定位到:/usr/lib/jvm

sudo mv <JDK folder> /usr/lib/jvm

对于以下 JAVA 命令,R 需要为 update-alternatives 设置单独的终端条目:

  • 解释器:'/usr/bin/java'
  • 归档器:'/usr/bin/jar'
  • 编译器:'/usr/bin/javac'
  • 标题准备:'/usr/bin/javah'

的条目jdk1.8.0_51如下:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_51/bin/java" 2

sudo update-alternatives --install "/usr/bin/jar" "jar"  "/usr/lib/jvm/jdk1.8.0_51/bin/jar" 2

sudo update-alternatives --install "/usr/bin/javac" "javac"  "/usr/lib/jvm/jdk1.8.0_51/bin/javac" 2

sudo update-alternatives --install "/usr/bin/javah" "javah"  "/usr/lib/jvm/jdk1.8.0_51/bin/javah" 2

update-alternatives --install注意: JVM执行后的输出jdk1.8.0_51应类似以下内容:

update-alternatives:使用 /usr/lib/jvm/jdk1.8.0_51/bin/java 在自动模式下提供 /usr/bin/java (java)

选择所需的 JVM 作为默认值

sudo update-alternatives --config java

如果仅设置了一个 JVM,则终端中将显示以下输出

链接组 java (提供 /usr/bin/java) 中只有一个替代方案:/usr/lib/jvm/jdk1.8.0_51/bin/java 无需配置。

或者必须选择所需 JVM 的相关条目#

检查是否链接了正确的 JVM

java --version

最后,使用以下命令更新 R 设置:

sudo R CMD javareconf

请注意,如果您尝试过其他方式“硬连线”配置 JVM,则此设置似乎不起作用

相关内容