Il y a environ six mois, un nouveau venu a dit: «Je veux exécuter R à partir de Java», et j'ai écrit une note lorsque j'ai répondu. C'était correct de lancer le processus, mais il y avait un module appelé ** JRI ** appelé ** Java / R Interface **, alors j'ai décidé de m'en occuper.
What is rJava?
rJava is a simple R-to-Java interface.
It is comparable to the .C/.Call C interface.
rJava provides a low-level bridge between R and Java (via JNI).
It allows to create objects, call methods and access fields of Java objects from R.
http://www.rforge.net/rJava/index.html
En bref, c'est une interface qui appelle R via JNI. Depuis que JNI est utilisé, la configuration du fichier dll était un peu gênante.
Je vais laisser tomber JRI.jar.
Démarrez l'interface graphique R et exécutez la commande d'installation.
install.packages('rJava')
Cela téléchargera le JAR et la DLL sous C: \ Program Files \ R \ R-3.3.1 \ library \ rJava \
.
Il semble que la gestion des versions JAR devient soudainement chaotique.
Seul JRI.jar semble être capable de gérer le référentiel.
Cliquez ici pour utiliser Gradle.
// https://mvnrepository.com/artifact/org.nuiton.thirdparty/JRI
compile group: 'org.nuiton.thirdparty', name: 'JRI', version: '0.9-6'
Cliquez ici pour utiliser Maven.
<dependency>
<groupId>org.nuiton.thirdparty</groupId>
<artifactId>JRI</artifactId>
<version>0.9-6</version>
</dependency>
… Mais j'ai absolument besoin du fichier dll inclus dans rJava. Il semble qu'il soit nécessaire de prendre des mesures individuelles telles que le supprimer du site d'origine sans appuyer sur la commande. http://www.rforge.net/rJava/files/
Obtenez jri.dll
et définissez-le.
Un des fichiers C: \ Program Files \ R \ R-3.3.1 \ library \ rJava \ jri
.
64 bits est «x64», 32 bits est «i386».
Cette fois, je l'ai déployé dans le dossier directement sous l'exécution. Si vous souhaitez le déployer dans un dossier différent, vous devez le mettre dans votre PATH.
Vous devez le faire via votre PATH.
Comment exécuter l'environnement Windows
set PATH=%PATH%;C:/Program Files/R/R-3.3.1/bin;C:/Program Files/R/R-3.3.1/bin/i386;C:\Program Files\R\R-3.3.1\library\rJava\jri\i386
java ^
-classpath "./classes;C:/Program Files/R/R-3.3.1/library/rJava/jri/JRI.jar" ^
example.MyTest
Cela a fonctionné sans les paramètres ci-dessous.
Paramètres inutiles?
set R_DOC_DIR="C:/Program Files/R/R-3.3.1/doc"
set R_INCLUDE_DIR="C:/Program Files/R/R-3.3.1/include"
set R_SHARE_DIR="C:/Program Files/R/R-3.3.1/share"
Ajoutez JRI.jar à WEB-INF / lib (non requis s'il est géré par Maven ou Gradle).
Vous devez également définir le chemin d'accès à jri.dll. Bouton d'exécution vert> Exécuter la configuration> Arguments> Arguments VM
Arguments d'exécution
-Djava.library.path="C:\Program Files\R\R-3.3.1\library\rJava\jri\i386"
Ajouter
J'obtiens souvent cette erreur.
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
java.lang.UnsatisfiedLinkError: no jri in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
at example.MyTest(MyTest.java:11)
N'oubliez pas de définir le chemin de jri.dll.
Si vous franchissez ce qui précède, ce qui suit apparaîtra.
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
java.lang.UnsatisfiedLinkError: C:\dll\jri.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
at example.MyTest(MyTest.java:11)
Même s'il est défini, je me fâche lorsque la dépendance de dll est étrange. Puisque jri.dll dépend de dll sous bin / i386 ou bin / x86, n'oubliez pas de le définir également.
Recommended Posts