安装rJava
Installation of rJava
我尝试使用之前的 questions/answers 解决这个问题,但没有成功。所以,这是我的问题。
我在 Ubuntu 框 (14.04) 上使用 RStudio,我尝试从源代码升级 rJava,但在这个过程中我设法丢失了它。
我尝试使用
再次安装它
install.packages("rJava")
返回了以下错误信息,
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.
If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status
所以,我去终端输入,
sudo R CMD javareconf
这也给出了以下错误,
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program
JAVA_HOME : /usr/lib/jvm/default-java
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /usr/lib/R
Done.
我尝试点击这些链接,one and two 但它们似乎没有解决我的问题; SO 上有更多链接,但我不确定要访问哪个链接。我还通过 Ubuntu 软件中心卸载并重新安装了 RStudio,但这没有任何区别。
还有谁能帮忙吗?
简而言之,我希望能够再次将 RStudio 与 rJava 一起使用,而不会破坏 Java 的任何其他用途(例如 jmol)。
首先,我建议从其网站安装 Rstudio:https://www.rstudio.com/products/rstudio/download/ (i.e. Rstudio 64bit: https://download1.rstudio.org/rstudio-0.99.489-amd64.deb)。这并不能直接解决问题,但有助于避免 Rstudio 的其他错误。
关于错误,请尝试确保您已 JDK 安装。我不认为命令 java -version
可以判断是否安装了 JDK。你必须检查 JDK 本身的包,或者根据错误信息,这样做:
locate jni.h
输出应与您的 JAVAHOME 匹配或兼容,例如:
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h
/usr/lib/jvm/java-7-oracle/include/jni.h
更新 1:
R CMD javareconf
正在寻找 $(JAVA_HOME)/include
下的 jni.h
文件
您已安装 JDK,但很可能您将 java 默认设置为 JRE 目录,这就是错误发生的原因。
您可以通过执行以下命令查看 default-java
真正指向的位置:
jRealDir=$(readlink -f /usr/lib/jvm/default-java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h
如果 ls
命令失败,您必须进行设置,以便 javareconf
(以及后来的 rJava
)可以使用 JDK 中的 java 而不是来自 JRE。您有两个选择:
方法 1:在系统范围内执行
这很方便,但可能会影响其他程序,例如您提到的程序 jmol
。但别担心,这是可恢复的,只需重新 运行 命令并选择旧命令即可。执行以下命令并选择具有 JDK:
的目录
sudo update-alternatives --config java
在测试 jmol
是如何工作之后,如果它工作正常那么恭喜。您现在已准备好测试 rJava。如果不行,试试下面的第二种方法
方法二:只对R做
把它放在你的主目录下的.Rprofile
Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir.
更新或创建后 .Rprofile
请在 Rstudio 中重新启动 R。在这种情况下,R CMD javareconf
可能仍然会失败,但如果你从 Rstudio 的 Tools
菜单下的 Shell
运行 它应该没问题。
关于从 Ubuntu 的 stock repo 安装或 Rstudio。获得 rJava
运行ning 没有什么不同。话又说回来,我建议在其主页上安装 Rstudio,因为新版本也有一些不错的功能(即更好的自动完成功能,这是我最喜欢的)。
您似乎没有安装 JDK。您至少需要
sudo apt-get install openjdk-7-jdk
然后重新运行
sudo R CMD javareconf
确保您没有手动设置 JAVA_HOME
- 它会被自动检测到。然后你应该看到这样的东西:
$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.7.0_91
Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/../include
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR
JAVA_HOME : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/../include
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
sudo apt-get install r-cran-rjava
有什么问题吗?
查看 for example this earlier answer 及其相关问题/话题。
对于从头开始的安装,您可能仍然比从 sudo apt-get build-dep r-cran-rjava
开始更糟糕。它将为您提供与您的 Ubuntu 版本相对应的 JDK。
我一直在处理这个确切的问题,此线程或其他类似线程中的任何内容都没有解决它。我在 Ubuntu 16.04,这是我如何让它工作的:
apt-get install openjdk-9-jdk
rm -rf /usr/lib/jvm/default-java
ln -s /usr/lib/jvm/java-9-openjdk-amd64/ /usr/lib/jvm/default-java
您可以在错误消息中看到 JAVA_HOME
的位置。
然后用locate jni.h
找到jni.h
在哪里,接下来用softlink把这个位置link到$(JAVA_HOME)/include
,就像@biocyberman提到的.
这是我做的:
ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /opt/conda/include/jni.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h /opt/conda/include/jni_md.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/
因为我的 JAVA_HOME
是 /opt/conda
而且我也没有 jni_md.h
和 -ljvm
.
我在用Ubuntu16.04
.
这是对我有用的 R-Bloggers 上的 link:https://www.r-bloggers.com/installing-rjava-on-ubuntu/
sudo apt-get install -y default-jre
sudo apt-get install -y default-jdk
sudo R CMD javareconf
install.packages("rJava")
我尝试使用之前的 questions/answers 解决这个问题,但没有成功。所以,这是我的问题。
我在 Ubuntu 框 (14.04) 上使用 RStudio,我尝试从源代码升级 rJava,但在这个过程中我设法丢失了它。
我尝试使用
再次安装它install.packages("rJava")
返回了以下错误信息,
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.
If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status
所以,我去终端输入,
sudo R CMD javareconf
这也给出了以下错误,
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program
JAVA_HOME : /usr/lib/jvm/default-java
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /usr/lib/R
Done.
我尝试点击这些链接,one and two 但它们似乎没有解决我的问题; SO 上有更多链接,但我不确定要访问哪个链接。我还通过 Ubuntu 软件中心卸载并重新安装了 RStudio,但这没有任何区别。
还有谁能帮忙吗?
简而言之,我希望能够再次将 RStudio 与 rJava 一起使用,而不会破坏 Java 的任何其他用途(例如 jmol)。
首先,我建议从其网站安装 Rstudio:https://www.rstudio.com/products/rstudio/download/ (i.e. Rstudio 64bit: https://download1.rstudio.org/rstudio-0.99.489-amd64.deb)。这并不能直接解决问题,但有助于避免 Rstudio 的其他错误。
关于错误,请尝试确保您已 JDK 安装。我不认为命令 java -version
可以判断是否安装了 JDK。你必须检查 JDK 本身的包,或者根据错误信息,这样做:
locate jni.h
输出应与您的 JAVAHOME 匹配或兼容,例如:
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h
/usr/lib/jvm/java-7-oracle/include/jni.h
更新 1:
R CMD javareconf
正在寻找 $(JAVA_HOME)/include
下的 jni.h
文件
您已安装 JDK,但很可能您将 java 默认设置为 JRE 目录,这就是错误发生的原因。
您可以通过执行以下命令查看 default-java
真正指向的位置:
jRealDir=$(readlink -f /usr/lib/jvm/default-java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h
如果 ls
命令失败,您必须进行设置,以便 javareconf
(以及后来的 rJava
)可以使用 JDK 中的 java 而不是来自 JRE。您有两个选择:
方法 1:在系统范围内执行
这很方便,但可能会影响其他程序,例如您提到的程序 jmol
。但别担心,这是可恢复的,只需重新 运行 命令并选择旧命令即可。执行以下命令并选择具有 JDK:
sudo update-alternatives --config java
在测试 jmol
是如何工作之后,如果它工作正常那么恭喜。您现在已准备好测试 rJava。如果不行,试试下面的第二种方法
方法二:只对R做
把它放在你的主目录下的.Rprofile
Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir.
更新或创建后 .Rprofile
请在 Rstudio 中重新启动 R。在这种情况下,R CMD javareconf
可能仍然会失败,但如果你从 Rstudio 的 Tools
菜单下的 Shell
运行 它应该没问题。
关于从 Ubuntu 的 stock repo 安装或 Rstudio。获得 rJava
运行ning 没有什么不同。话又说回来,我建议在其主页上安装 Rstudio,因为新版本也有一些不错的功能(即更好的自动完成功能,这是我最喜欢的)。
您似乎没有安装 JDK。您至少需要
sudo apt-get install openjdk-7-jdk
然后重新运行
sudo R CMD javareconf
确保您没有手动设置 JAVA_HOME
- 它会被自动检测到。然后你应该看到这样的东西:
$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.7.0_91
Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/../include
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR
JAVA_HOME : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/../include
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
sudo apt-get install r-cran-rjava
有什么问题吗?
查看 for example this earlier answer 及其相关问题/话题。
对于从头开始的安装,您可能仍然比从 sudo apt-get build-dep r-cran-rjava
开始更糟糕。它将为您提供与您的 Ubuntu 版本相对应的 JDK。
我一直在处理这个确切的问题,此线程或其他类似线程中的任何内容都没有解决它。我在 Ubuntu 16.04,这是我如何让它工作的:
apt-get install openjdk-9-jdk
rm -rf /usr/lib/jvm/default-java
ln -s /usr/lib/jvm/java-9-openjdk-amd64/ /usr/lib/jvm/default-java
您可以在错误消息中看到 JAVA_HOME
的位置。
然后用locate jni.h
找到jni.h
在哪里,接下来用softlink把这个位置link到$(JAVA_HOME)/include
,就像@biocyberman提到的.
这是我做的:
ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /opt/conda/include/jni.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h /opt/conda/include/jni_md.h
ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/
因为我的 JAVA_HOME
是 /opt/conda
而且我也没有 jni_md.h
和 -ljvm
.
我在用Ubuntu16.04
.
这是对我有用的 R-Bloggers 上的 link:https://www.r-bloggers.com/installing-rjava-on-ubuntu/
sudo apt-get install -y default-jre
sudo apt-get install -y default-jdk
sudo R CMD javareconf
install.packages("rJava")