Java, rJava 在 AWS EC2 for R 上安装(xlsx 和其他包)
Java, rJava install on AWS EC2 for R (xlsx and other packages)
我已经使用 Ubuntu 16.04.LTS 和 RStudio 重新激活了休眠的 Amazon EC2 微实例(请参阅下面的 sessionInfo()
输出)运行ning(感谢 AMI Louis Aslett).首先通过 ssh 连接到 AWS 实例后,我得到 运行 sudo apt-get update
。
当我尝试在 R Studio 中安装一些包(例如 xlsx 和其他包)时(由于缺少 Java,我遇到了一个错误,这似乎是一个常见问题)。我按照建议 1) 安装依赖项(例如 xlsx
,如 rJava
,和 xlsxjars
)separately; 2) apt-get install r-cran-rjava
as suggested here。然后检查安装的 java -version
显示
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
提出了类似的问题“" and here "error: unable to load installed packages...”,其中解决方案似乎是将java的路径链接到R export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
或设置R的env。变量 Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server')
.
然而,运行ning R CMD javareconf -e
揭示了(我想)一些更深层次的问题 (see Image) 和/或片段:
R CMD javareconf -e
Java interpreter : /usr/lib/jvm/default-java/jre/bin/java
Java version : 1.8.0_131
Java home path : /usr/lib/jvm/default-java
Java compiler : not present
Java headers gen.:
Java archive tool:
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
compilation terminated.
/usr/lib/R/etc/Makeconf:132: recipe for target 'conftest.o' failed
make: *** [conftest.o] Error 1
Unable to compile a JNI program
The following Java variables have been exported:
JAVA_HOME JAVA JAVAC JAVAH JAR JAVA_LIBS JAVA_CPPFLAGS JAVA_LD_LIBRARY_PATH
Running: /bin/bash
使用 Java 编译器:不存在且
conftest.c:1:17: fatal error: jni.h: No such file or directory
compilation terminated. /usr/lib/R/etc/Makeconf:132: recipe for target 'conftest.o' failed
然后我发现了一个问题“how to make jni.h be found?”:这里推荐了最好的解决方案gcc -I/usr/lib/jvm/jdk1.7.0_07/include
检查同一目录 cd /usr/lib/jvm/
并列出其内容 ls --all
显示:
.default-java
.java-1.8.0-openjdk-amd64.jinfo
..java-1.8.0-openjdk-amd64
java-8-openjdk-amd64
运行、gcc -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include
结果:gcc: fatal error: no input files
此外,我已经尝试 sudo apt-get install openjdk-X-jdk
(这是建议的答案“how to make jni.h be found?”),但可能该包不再存在 "Unable to locate package openjdk-X-jdk"。
不幸的是,我被卡住了并且没有足够的技能来实现其他(看似更复杂的解决方案)。我真的很感激一些 help/input.
R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel compiler stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] openxlsx_4.0.17 qdapTools_1.3.1 qdapRegex_0.7.2
[4] qdapDictionaries_1.0.6 stringr_1.1.0 stringi_1.1.2
[7] dplyr_0.5.0 tm_0.7-1 NLP_0.1-10
[10] scales_0.4.0 RColorBrewer_1.1-2 ParallelForest_1.1.0
[13] doMC_1.3.4 iterators_1.0.8 foreach_1.4.3
[16] boot_1.3-18 reshape2_1.4.1 glmm_1.1.1
[19] Matrix_1.2-6 mvtnorm_1.0-5 trust_0.1-7
[22] ggplot2_2.1.0 shiny_0.13.2
loaded via a namespace (and not attached):
[1] gtools_3.5.0 slam_0.1-40 lattice_0.20-33
[4] colorspace_1.2-7 htmltools_0.3.5 chron_2.3-50
[7] XML_3.98-1.7 DBI_0.5-1 plyr_1.8.4
[10] munsell_0.4.3 gtable_0.2.0 codetools_0.2-14
[13] httpuv_1.3.3 gender_0.5.1 Rcpp_0.12.7
[16] xtable_1.8-2 gdata_2.17.0 mime_0.5
[19] gridExtra_2.2.1 digest_0.6.10 grid_3.3.1
[22] tools_3.3.1 bitops_1.0-6 magrittr_1.5
[25] RCurl_1.95-4.8 tibble_1.2 data.table_1.10.4
[28] assertthat_0.1 R6_2.2.0 igraph_1.0.1
我的一个朋友建议使用 sudo apt-get install openjdk-8-jdk
在 ec2 实例上安装 java,有趣的是,它解决了问题。
您需要安装 JDK。也看看这里吧
我在这里描述了如何使用 R、Java 和 rJava 包。尽管描述是基于 macOS 的,但它也应该适用于 Linux。这是非常通用的方法。
您的问题与您使用的是 JRE 而不是 JDK 有关。那里缺少 JNI headers。
两年太晚了,但对我有用的是遵循 link https://www.r-bloggers.com/installing-rjava-on-ubuntu/
上的说明。在发表评论时,他们是:
# Install the Java Runtime Environment (JRE).
sudo apt-get install -y default-jre
# Install the Java Development Kit (JDK).
sudo apt-get install -y default-jdk
# Update where R expects to find various Java files.
sudo R CMD javareconf
# Install the package.
> install.packages("rJava")
我已经使用 Ubuntu 16.04.LTS 和 RStudio 重新激活了休眠的 Amazon EC2 微实例(请参阅下面的 sessionInfo()
输出)运行ning(感谢 AMI Louis Aslett).首先通过 ssh 连接到 AWS 实例后,我得到 运行 sudo apt-get update
。
当我尝试在 R Studio 中安装一些包(例如 xlsx 和其他包)时(由于缺少 Java,我遇到了一个错误,这似乎是一个常见问题)。我按照建议 1) 安装依赖项(例如 xlsx
,如 rJava
,和 xlsxjars
)separately; 2) apt-get install r-cran-rjava
as suggested here。然后检查安装的 java -version
显示
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
提出了类似的问题“export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
或设置R的env。变量 Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server')
.
然而,运行ning R CMD javareconf -e
揭示了(我想)一些更深层次的问题 (see Image) 和/或片段:
R CMD javareconf -e
Java interpreter : /usr/lib/jvm/default-java/jre/bin/java
Java version : 1.8.0_131
Java home path : /usr/lib/jvm/default-java
Java compiler : not present
Java headers gen.:
Java archive tool:
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
compilation terminated.
/usr/lib/R/etc/Makeconf:132: recipe for target 'conftest.o' failed
make: *** [conftest.o] Error 1
Unable to compile a JNI program
The following Java variables have been exported:
JAVA_HOME JAVA JAVAC JAVAH JAR JAVA_LIBS JAVA_CPPFLAGS JAVA_LD_LIBRARY_PATH
Running: /bin/bash
使用 Java 编译器:不存在且
conftest.c:1:17: fatal error: jni.h: No such file or directory compilation terminated. /usr/lib/R/etc/Makeconf:132: recipe for target 'conftest.o' failed
然后我发现了一个问题“how to make jni.h be found?”:这里推荐了最好的解决方案gcc -I/usr/lib/jvm/jdk1.7.0_07/include
检查同一目录 cd /usr/lib/jvm/
并列出其内容 ls --all
显示:
.default-java
.java-1.8.0-openjdk-amd64.jinfo
..java-1.8.0-openjdk-amd64 java-8-openjdk-amd64
运行、gcc -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include
结果:gcc: fatal error: no input files
此外,我已经尝试 sudo apt-get install openjdk-X-jdk
(这是建议的答案“how to make jni.h be found?”),但可能该包不再存在 "Unable to locate package openjdk-X-jdk"。
不幸的是,我被卡住了并且没有足够的技能来实现其他(看似更复杂的解决方案)。我真的很感激一些 help/input.
R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel compiler stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] openxlsx_4.0.17 qdapTools_1.3.1 qdapRegex_0.7.2
[4] qdapDictionaries_1.0.6 stringr_1.1.0 stringi_1.1.2
[7] dplyr_0.5.0 tm_0.7-1 NLP_0.1-10
[10] scales_0.4.0 RColorBrewer_1.1-2 ParallelForest_1.1.0
[13] doMC_1.3.4 iterators_1.0.8 foreach_1.4.3
[16] boot_1.3-18 reshape2_1.4.1 glmm_1.1.1
[19] Matrix_1.2-6 mvtnorm_1.0-5 trust_0.1-7
[22] ggplot2_2.1.0 shiny_0.13.2
loaded via a namespace (and not attached):
[1] gtools_3.5.0 slam_0.1-40 lattice_0.20-33
[4] colorspace_1.2-7 htmltools_0.3.5 chron_2.3-50
[7] XML_3.98-1.7 DBI_0.5-1 plyr_1.8.4
[10] munsell_0.4.3 gtable_0.2.0 codetools_0.2-14
[13] httpuv_1.3.3 gender_0.5.1 Rcpp_0.12.7
[16] xtable_1.8-2 gdata_2.17.0 mime_0.5
[19] gridExtra_2.2.1 digest_0.6.10 grid_3.3.1
[22] tools_3.3.1 bitops_1.0-6 magrittr_1.5
[25] RCurl_1.95-4.8 tibble_1.2 data.table_1.10.4
[28] assertthat_0.1 R6_2.2.0 igraph_1.0.1
我的一个朋友建议使用 sudo apt-get install openjdk-8-jdk
在 ec2 实例上安装 java,有趣的是,它解决了问题。
您需要安装 JDK。也看看这里吧
我在这里描述了如何使用 R、Java 和 rJava 包。尽管描述是基于 macOS 的,但它也应该适用于 Linux。这是非常通用的方法。
您的问题与您使用的是 JRE 而不是 JDK 有关。那里缺少 JNI headers。
两年太晚了,但对我有用的是遵循 link https://www.r-bloggers.com/installing-rjava-on-ubuntu/
上的说明。在发表评论时,他们是:
# Install the Java Runtime Environment (JRE).
sudo apt-get install -y default-jre
# Install the Java Development Kit (JDK).
sudo apt-get install -y default-jdk
# Update where R expects to find various Java files.
sudo R CMD javareconf
# Install the package.
> install.packages("rJava")