2017-09-25 4 views
2

Je continue d'avoir des problèmes pour installer et charger rJava. J'ai R 3.4.1 («Single Candle»); Java v 9 et mac OS 10.12.6.Problème avec rJava, mac 10.12.6 et Java v 9 (R version 3.4.1)

J'ai suivi toutes les étapes énumérées ci-here qui inclus à l'aide du terminal pour modifier mon ~/.profile pour inclure:

export JAVA_HOME = $ (/ usr/libexec/java_home -v 9)

export PATH = $ JAVA_HOME/bin: $ PATH

Et d'apporter d'autres modifications pour connecter R au Java «correct». Quand je lance

sudo R CMD javareconf

cependant, je reçois un message d'erreur qui dit:

avertissement: 'JNI_CreateJavaVM' est dépréciée [-Wdeprecated-déclarations] JNI_CreateJavaVM (0, 0, 0); ^ /System/Library/Frameworks/JavaVM.framework/Headers/jni.h:1937:1: Note: 'JNI_CreateJavaVM' a été explicitement marqué dépréciée ici JNI_CreateJavaVM (JavaVM ** PVM, vide pENV **, vide * args); ^ 1 warning généré.

Et quand je lance

R CMD INSTALLER rJava_0.9-8.tar.gz

Tout se passe bien jusqu'à ce que je reçois une erreur qui dit:

vérifier si les programmes JNI peuvent être compilés ... configure: error: Impossible de compiler un simple programme JNI. Voir config.log pour plus de détails.

Assurez-vous que le kit de développement Java est installé et correctement enregistré dans R. En cas de doute, réexécutez "R CMD javareconf" en tant que root.

ERREUR: la configuration a échoué pour le package « Rjava »

Michal du site lié ci-dessus aimablement suggéré de faire en sorte que '/ usr/libexec/java_home -v 9' "points" à ne pas JDK et JRE. Je ne suis pas sûr de savoir comment faire cela. Aussi, quand je tente quelque chose comme:

echo $ JAVA_HOME

Je reçois:

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home

Comment puis-je savoir si ce JDK ou JRE?

En raison de mes messages d'erreur, je pense que j'ai un problème JNI, mais je ne suis pas sûr de savoir comment faire pour résoudre ce problème. Toute idée concernant ce qui pourrait avoir mal tourné en utilisant le tutoriel de Michal serait grandement appréciée!

P.S. Ma question initiale était en R, en essayant de charger la bibliothèque (Rjava) et d'obtenir cette erreur:

Erreur: package ou charge espace de noms a échoué pour « Rjava »: .onLoad a échoué dans loadNamespace() pour « Rjava », les détails: appel: dyn.load (file, DLLpath = chemin DLL, ...) erreur: impossible de charger l'objet partagé '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so': dlopen (/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Bibliothèque non chargée: @ rpath/libjvm.dylib Référencé par: /Library/Frameworks/R.framework /Versions/3.4/Resources/library/rJava/libs/rJava.so Raison: image non trouvée

Répondre

0

Vous pouvez faire ce qui suit pour tester si votre Java 9 est JDK. Faire ce qui suit:

> git clone https://github.com/mkowsiak/jnicookbook.git 
> cd jnicookbook/recipeNo001 
> export JAVA_HOME=$(/usr/libexec/java_home -v 9) 
> export PATH=$JAVA_HOME/bin:$PATH 
> make 
> make test 

Si vous voyez

Hello world! 

à la fin, cela signifie que votre JDK peut compiler le code JNI. Maintenant, si cela fonctionne, cela signifie que rJava utilise toujours une installation Java incorrecte (par exemple une d'Apple). Dans ce cas, vous devez jeter un coup d'œil dans le journal des erreurs de rJava pour vous assurer de ce qui est utilisé. J'espère que cela vous aidera au moins un peu.

+0

Merci beaucoup pour cela, je l'apprécie vraiment! Quand j'ai couru ceci, j'ai eu cette erreur: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/java -Djava.library.path =: ./ lib -cp target recipeNo001.HelloWorld Erreur: Impossible de trouver ou de charger la classe principale recipeNo001.HelloWorld Causée par: java.lang.ClassNotFoundException: recipeNo001.HelloWorld make: *** [test] Erreur 1 - une suggestion sur ce que cela signifie? Oo – Kate

+0

Assurez-vous d'appeler: "make" avant de lancer "make test" - J'ai manqué de mettre cette étape dans les instructions :( – mko

+0

J'ai le même problème Avec @mko sugestion j'ai vérifié que JDK peut compiler le code JNI, mais le question est maintenant comment faire rJava utiliser l'installation Java correcte? –