【问题标题】:Java, rJava install on AWS EC2 for R (xlsx and other packages)Java, rJava 安装在 AWS EC2 for R (xlsx 和其他包)
【发布时间】:2017-10-26 06:17:01
【问题描述】:

我已经重新激活了我休眠的 Amazon EC2 微实例,Ubuntu 16.04.LTS 和 RStudio(请参阅下面的 sessionInfo() 输出)正在运行(感谢Louis Aslett 的 AMI)。在首先通过 ssh 连接到 AWS 实例后,我运行了 sudo apt-get update

当我尝试在 R Studio 中安装一些包(例如 xlsx 和其他包)时(由于缺少 Java,我遇到了一个错误,这似乎是一个常见问题)。我按照建议 1) 安装依赖项(例如 xlsx,如 rJavaxlsxjarsseparately; 2)apt-get install r-cran-rjava 建议here。然后检查已安装的java -version 显示

openjdk 版本“1.8.0_131”
OpenJDK 运行时环境(内部版本 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64 位服务器 VM(内部版本 25.131-b11,混合模式)

在“rJava load error in RStudio/R after “upgrading” to OSX Yosemite”和此处“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').

但是,运行 R CMD javareconf -e 揭示了(我想)一些更深层次的问题 (see Image) 和/或 sn-p:

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: 致命错误: jni.h: 没有这样的文件或目录 编译终止。 /usr/lib/R/etc/Makeconf:132:目标“conftest.o”的配方失败

然后我发现了一个问题“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?”中)但可能该包不再存在“无法找到包openjdk-X-jdk”。

不幸的是,我被卡住了,并且没有足够的技能来实施其他(看似更复杂的解决方案)。非常感谢一些帮助/输入。

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     

【问题讨论】:

  • 虽然我通常不会说使用其他工具,但您可以考虑使用readxl 包吗?它不依赖于 Java,因此可以避免所有这些麻烦。
  • 感谢您的回答和好主意。实际上,我想运行一个闪亮的应用程序,我的(真正的)问题不是 xlsx 而是 qdap。

标签: java r amazon-web-services amazon-ec2 ubuntu-server


【解决方案1】:

两年太晚了,但对我有用的是遵循此链接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")

【讨论】:

    【解决方案2】:

    您需要安装 JDK。也请看这里。

    http://www.owsiak.org/?p=3671

    我在这里描述了如何使用 R、Java 和 rJava 包。即使描述是基于 macOS 的,它也应该适用于 Linux。这是很一般的方法。

    您的问题与您使用 JRE 而不是 JDK 的事实有关。那里缺少 JNI 标头。

    【讨论】:

    • 感谢您提供富有洞察力的网站。
    【解决方案3】:

    我的一个朋友建议使用sudo apt-get install openjdk-8-jdk 在ec2 实例上安装java,有趣的是,它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2020-01-13
      相关资源
      最近更新 更多