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')

a 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 le même code à nouveau, a eu 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, et la recherche de libjvm.so sur l’ensemble de la machine a eu pour résultat

/usr/lib/jvm/Java-8-Oracle/jre/lib/AMD64/server/libjvm.so
/usr/lib/jvm/jdk1.8.25/jre/lib/AMD64/server/libjvm.so
/usr/local/Java/jre1.7.0_75/lib/AMD64/server/libjvm.so
7
tan

L'exécution de ce qui suit devrait résoudre votre problème:

$ export LD_LIBRARY_PATH=/usr/lib/jvm/Java-8-Oracle/jre/lib/AMD64/server
$ Sudo R CMD javareconf
9
Samuel-Rosa

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 jre utilisé. Vérifiez echo $Java_HOME.

  3. Créez un lien symbolique à l'aide de 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

Parfois, vous avez besoin de ce R CMD javareconf -e

voir https://stackoverflow.com/a/13446026/2803344

1
Belter