我对 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-jdk
或openjdk-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配置准备概要如下:
- 确保所需的 JVM 正确位于
/usr/lib/jvm
- 设置链接使用
update-alternatives --install
R 所需的每个 JAVA 命令 - 用于
update-alternatives --configure
选择默认 JVM - 刷新 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,则此设置似乎不起作用