web-dev-qa-db-fra.com

libjvm.so: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

Essayer d'installer le paquet rJava sur R, sur mon Ubuntu 14.10, en utilisant ce code

if (!require(rJava)) install.packages('rJava')

eu quelques erreurs liées à Java, y compris des problèmes de jni, après la réinstallation du jdk, et a essayé d'exécuter à nouveau le même code, obtenu cette erreur

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/local/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpfFjrp0/downloaded_packages’
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘rJava’

cherché des solutions, pour trouver à peu près tout le monde suggérant (pour x64) d'exécuter ces commandes

export LD_LIBRARY_PATH=/usr/lib/jvm/Java-8-Oracle/lib/AMD64:/usr/lib/jvm/Java-8-Oracle/jre/lib/AMD64/server
Sudo R CMD javareconf 

mais cela n'a pas fonctionné, y a-t-il autre chose que je puisse faire? Je fournirai tous les détails nécessaires

19
tan

J'avais la même erreur quand j'essayais de charger rJava dans RStudio ..__ La solution suivante a fonctionné pour moi

1) Sudo rstudio-server stop
2) export LD_LIBRARY_PATH=/usr/lib/jvm/jre/lib/AMD64:/usr/lib/jvm/jre/lib/AMD64/default
3) Sudo rstudio-server start

Après avoir effectué les étapes ci-dessus, j'ai pu exécuter avec succès les tâches suivantes dans RStudio

> library("DBI")
> library("rJava")
> library("RJDBC")
16
minhas23

Pour résoudre cela, 

  1. Courir

    Sudo R CMD javareconf

  2. Ajoutez les éléments suivants à/etc/environment. Ceci sera alors défini chaque fois que votre machine redémarrera. 

    LD_LIBRARY_PATH =/usr/lib/jvm/default-Java/jre/lib/AMD64/server / 

    (changez de chemin) 

  3. Exécutez ce qui suit:

    source/etc/environment

  4. redémarrage du serveur rstudio
14

si rien de ce qui précède ne fonctionne, essayez ceci et remerciez-moi plus tard (réponse générique) :)

R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$Java_LD_LIBRARY_PATH
6
Haktan Suren
  • J'ai résolu un problème similaire en exécutant la commande suivante chaque fois que je veux ouvrir RStudio. Allez dans le dossier qui contient l'exécutable de rstudio, ouvrez le terminal et tapez:

    LD_LIBRARY_PATH =/Bibliothèque/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Sommaire/Accueil/jre/lib/server: ouvrir -a rstudio

    Bien sûr, vous devez changer le chemin en fonction de votre version de Java.

  • Si la solution précédente ne fonctionne pas, essayez de lire cet article: http://allanino.me/blog/programming/installing-some-r-packages/ .

  • Si cette solution ne fonctionne pas aussi, la dernière chance que vous avez est d'installer rJava en le compilant à partir du code source.

2
Francesco Palmiotto

Si quelqu'un vient ici maintenant, veuillez essayer l'approche ci-dessous:

Pas:

  1. Trouvez votre emplacement R. Il sera stocké dans rsession-ld-library-path dans le fichier rserver.conf. Ou simplement en faisant which R. L'emplacement est généralement /usr/lib64/R/lib ou /usr/lib64/Microsoft-r/3.3/lib64/R/lib

  2. Recherchez le fichier libjvm.so qui se trouve généralement dans le chemin usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/server en fonction du fichier jre utilisé. Vérifiez l'environnement $ Java_HOME.

  3. Créer un lien symbolique en utilisant ln -sSudo ln -s /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/server/libjvm.so /usr/lib64/Microsoft-r/3.3/lib64/R/lib/libjvm.so

  4. Redémarrer le serveur R

2
Tejas Lodaya

Vérifiez si $Java_HOME pointe vers le bon emplacement en

echo $Java_HOME

J'utilise openjdk, cependant $Java_HOME pointait vers un dossier non existant Oracle-Java.

Après avoir corrigé $Java_HOME run

Sudo R CMD javareconf

Vérifiez la sortie. Java headers gen. devrait pointer sur /usr/bin/javah. Par exemple:

djhurio@Skyforger ~ $ Sudo R CMD javareconf
Java interpreter : /usr/lib/jvm/default-Java/bin/Java
Java version     : 11.0.1
Java home path   : /usr/lib/jvm/default-Java
Java compiler    : /usr/lib/jvm/default-Java/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/lib/jvm/default-Java/bin/jar

Après cela, je peux installer et charger le paquet rJava.

0
djhurio

Eh bien, comme @ user3673 a souligné this , la solution pour moi a été de changer la ligne suivante dans /usr/lib/R/etc/ldpaths:

: ${R_Java_LD_LIBRARY_PATH=${Java_HOME}/lib/AMD64/server}

par celui-ci:

: ${R_Java_LD_LIBRARY_PATH=${Java_HOME}/jre/lib/AMD64/server}

0
Fábio