2017-05-25 1 views
0

J'ai réactivé ma microinstance Amazon EC2 dormante avec Ubuntu 16.04.LTS et RStudio (voir sessionInfo() sortie ci-dessous) en cours d'exécution (merci à AMI par Louis Aslett). Après avoir ssh-ing dans l'instance AWS, j'ai exécuté sudo apt-get update.Java, rJava installer sur AWS EC2 pour R (xlsx et autres paquets)

Lorsque j'ai essayé d'installer certains paquets (par exemple xlsx et autres) dans R Studio (j'ai une erreur à cause de Java manquant, ce qui semble être un problème courant). J'ai suivi les conseils pour 1) installer des dépendances (par exemple xlsx comme rJava, et xlsxjars) separately; 2) apt-get install r-cran-rjava comme suggéré here. Ensuite, la vérification des installé java -version a montré

la version OpenJDK "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11)
OpenJDK 64 bits serveur VM (build 25,131-b11, mode mixte)

des problèmes similaires ont été proposés "rJava load error in RStudio/R after “upgrading” to OSX Yosemite" et ici "error: unable to load installed packages...", où la solution semblait relier le chemin de java à R export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH ou le réglage env de R. variables Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server').

Cependant, en cours d'exécution R CMD javareconf -e révélé (je suppose) certains problèmes plus profonds (see Image) &/ou Snippet:

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

avec compilateur Java: pas présent et

conftest.c: 1: 17: erreur fatale: jni.h: Aucun fichier ou répertoire terminé./Usr/lib/R/etc/Makeconf: 132: recette pour cible 'conftest.o' a échoué

J'ai trouvé une question "how to make jni.h be found?": ici la meilleure solution proposée gcc -I/usr/lib/jvm/jdk1.7.0_07/include Vérification du même répertoire cd /usr/lib/jvm/ et liste son contenu ls --all montré:

.default-java
.java-1.8.0-openjdk-amd64.jinfo
..java-1.8.0-openjdk-amd64 java-8- openjdk-amd64

Courir, gcc -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include a donné lieu à: gcc: fatal error: no input files De plus, je l'ai essayé sudo apt-get install openjdk-X-jdk (il était parmi les réponses proposées « how to make jni.h be found? ») mais probablement le paquet n'existe plus « Impossible de trouver le paquet openjdk-X-jdk ».

Malheureusement, je suis coincé et pas assez compétent pour implémenter d'autres solutions (apparemment plus compliquées). J'apprécierais vraiment de l'aide/contribution.

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 

+0

Bien que je ne dis pas normalement utiliser un autre outil, seriez-vous en mesure d'utiliser le paquet 'readxl' à la place? Cela ne dépend pas de Java et éviterait ainsi tous ces maux de tête. – cdeterman

+0

Merci pour la réponse et la bonne idée. En fait, je veux lancer une application brillante et mon problème (réel) n'est pas xlsx mais qdap. – mmatt

Répondre

0

Vous devez installer JDK. Jetez un coup d'oeil ici aussi.

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

où je décris comment jouer avec R, Java et package Rjava. Même si la description est basée sur macOS, elle devrait aussi fonctionner avec Linux. C'est une approche assez générale.

Votre problème est lié au fait que vous utilisez JRE au lieu de JDK. Les en-têtes JNI manquent là.

+0

Merci pour le site web perspicace. – mmatt

0

Un de mes amis a suggéré d'installer Java sur l'instance EC2 en utilisant sudo apt-get install openjdk-8-jdk et, fait intéressant, il a résolu le problème.