Vor ungefähr einem halben Jahr sagte ein Neuling: "Ich möchte R von Java aus ausführen", und ich schrieb ein Memo, als ich antwortete. Es war in Ordnung, den Prozess zu starten, aber es gab ein Modul namens ** JRI ** namens ** Java / R Interface **, also entschied ich mich, mich damit zu befassen.
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
Kurz gesagt, es ist eine Schnittstelle, die R über JNI aufruft. Da JNI verwendet wird, war das Einrichten der DLL-Datei etwas mühsam.
Ich werde JRI.jar fallen lassen.
Starten Sie die R-GUI und führen Sie den Installationsbefehl aus.
install.packages('rJava')
Dadurch werden die JAR und die DLL unter "C: \ Programme \ R \ R-3.3.1 \ library \ rJava " heruntergeladen. Es scheint, dass das JAR-Versionsmanagement plötzlich chaotisch wird. Nur JRI.jar scheint in der Lage zu sein, das Repository zu verwalten.
Klicken Sie hier, um Gradle zu verwenden.
// https://mvnrepository.com/artifact/org.nuiton.thirdparty/JRI
compile group: 'org.nuiton.thirdparty', name: 'JRI', version: '0.9-6'
Klicken Sie hier, um Maven zu verwenden.
<dependency>
<groupId>org.nuiton.thirdparty</groupId>
<artifactId>JRI</artifactId>
<version>0.9-6</version>
</dependency>
… Aber ich brauche unbedingt die in rJava enthaltene DLL-Datei. Es scheint notwendig zu sein, einzelne Maßnahmen zu ergreifen, z. B. das Löschen von der ursprünglichen Site, ohne den Befehl zu drücken. http://www.rforge.net/rJava/files/
Holen Sie sich jri.dll
und setzen Sie es.
Eine von C: \ Programme \ R \ R-3.3.1 \ library \ rJava \ jri
.
64bit ist "x64", 32bit ist "i386".
Dieses Mal habe ich es im Ordner direkt unter der Ausführung bereitgestellt. Wenn Sie es in einem anderen Ordner bereitstellen möchten, müssen Sie es in Ihren PATH einfügen.
Sie müssen es durch Ihren Pfad tun.
So führen Sie die Windows-Umgebung aus
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
Es funktionierte ohne die folgenden Einstellungen.
Unnötige Einstellungen?
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"
Fügen Sie JRI.jar zu WEB-INF / lib hinzu (nicht erforderlich, wenn es von Maven oder Gradle verwaltet wird).
Sie müssen auch den Pfad für jri.dll festlegen. Grüne Schaltfläche Ausführen> Konfiguration ausführen> Argumente> VM-Argumente
Laufzeitargumente
-Djava.library.path="C:\Program Files\R\R-3.3.1\library\rJava\jri\i386"
Hinzufügen
Ich bekomme oft diesen Fehler.
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)
Vergessen Sie nicht, den Pfad von jri.dll festzulegen.
Wenn Sie das oben Gesagte durchbrechen, wird Folgendes angezeigt.
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)
Selbst wenn es eingestellt ist, werde ich wütend, wenn die Abhängigkeit von DLL seltsam ist. Da jri.dll von der DLL unter bin / i386 oder bin / x86 abhängt, vergessen Sie nicht, sie ebenfalls festzulegen.
Recommended Posts