web-dev-qa-db-fra.com

Pourquoi rJava ne fonctionne-t-il pas sur Ubuntu 14.04 avec OpenJDK 7?

Bonjour, j'ai des problèmes avec le paquetage rJava de cran.

J'ai installé

Sudo apt-get install openjdk-7-jdk
Sudo apt-get install r-cran-rjava

et a couru

Sudo R CMD javareconf
# Java interpreter : /usr/bin/Java
# Java version     : 1.7.0_55
# 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

J'essaie ensuite d'exécuter R et de charger rJava et d'obtenir l'erreur suivante:

R
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘rJava’

Je suis sur Ubuntu 14.04 64 bits et j'utilise R version 3.1.0 (2014-04-10) - "Spring Dance"

UPDATE: En réalité, ceci n'est pas spécifique à OpenJDK, je viens d'essayer Oracle Java 8 et j'ai obtenu le même résultat. J'ai également trouvé cette solution de contournement ici que je suis réticent à utiliser car il s'agit en fait d'une solution de contournement qui n'explique pas vraiment pourquoi elle est nécessaire. Le système de colis aurait dû gérer cela à mon avis. On dirait que libjvm.so est le problème et je le trouve ici

/usr/lib/jvm/Java-7-openjdk-AMD64/jre/lib/AMD64/jamvm/libjvm.so
/usr/lib/jvm/Java-7-openjdk-AMD64/jre/lib/AMD64/server/libjvm.so
/usr/lib/jvm/Java-7-Oracle/jre/lib/AMD64/server/libjvm.so

et pour une raison quelconque, rJava ne parvient pas à les trouver malgré la mise à jour avec Sudo R CMD javareconf.

UPDATE 2: L'intrigue s'épaissit: Si je lance R comme Sudo ça marche.

Merci pour les pointeurs.

16
Dr. Mike

J'ai eu le même problème avec une configuration similaire (R 3.1.0, Ubuntu 12.10, 32 bits). J'ai trouvé que la réponse était d'obtenir LD_LIBRARY_PATH correctement défini, comme décrit ici: erreur: impossible de charger les packages installés pour le moment sauf que le sous-répertoire en question est "client" et non "serveur". Alors maintenant, je configure mon environnement comme ceci:

export Java_HOME=/usr/lib/jvm/Java-7-openjdk-i386
export LD_LIBRARY_PATH=$Java_HOME/jre/lib/i386:$Java_HOME/jre/lib/i386/client
7
persistentNoob

vous pouvez résoudre ce problème en ouvrant rstudio en super utilisateur comme

Sudo rstudio

puis à l'intérieur de la course R

install.packages('rJava')
8
sagarambat

J'ai pu résoudre ce problème en utilisant cette réponse: https://stackoverflow.com/a/25932828/3939832

Ceci est utile si vous avez installé Oracle Java 7 ou 8. L'exportation de variables dans mon cas n'était pas une solution permanente. Vous devriez vérifier ce que R utilise comme environnement en faisant:

Sys.getenv("Java_HOME")

vous pouvez ensuite utiliser cet environnement en créant un fichier Java.conf, on /etc/ld.so.conf.d/, comme indiqué dans le lien de réponse ci-dessus.

7
lapisdecor

si vous utilisez Oracle Java, utilisez la commande suivante:

Sudo R CMD javareconf 

ne va pas aider à utiliser: 

Sudo R CMD javareconf **Java_HOME**=(path where Java home is located)
5
sourav karwa

J'ai essayé beaucoup de choses mais je n'ai pas travaillé. Puis j'ai essayé d'utiliser 

Sudo rstudio

et alors

install.packages('rJava')

Ça marche. Coool

1
Ajay Jadhav

L'installation du package rJava sur Ubuntu n'est pas aussi simple que la plupart des autres packages R. Quelques notes rapides sur la façon de le faire (Source: 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")

If you have a RStudio session open, then exit and restart it. This is important (a running RStudio session will not pick up these changes!).
0
Jyoti