Настройка интерфейса Java R (JRI) в Windows
Я следовал руководствам в интернете и смотрел вопросы по stackoverflow, но я все еще не могу настроить JRI на Windows.
Вот шаги, которые я предпринял:
1) Установить R
2) выполнить install.packages("rJava")
в R для установки rJava
3) Создайте системную переменную R_HOME
со значением C:Program FilesRR-3.1.2
4) Добавьте в мою переменную PATH
следующее: C:Program FilesRR-3.1.2binx64;C:UsersUSERNAMEDocumentsRwin-library3.1rJavajrix64
C:UsersUSERNAMEDocumentsRwin-library3.1rJavajri
) как зависимость в IntelliJ
6) Установите виртуальную машину опции в IntelliJ to -Djava.library.path=C:UsersUSERNAMEDocumentsRwin-library3.1rJavajrix64
7) запустите R и выполните library("rJava")
8) запустите мою программу, чтобы проверить, все ли настроено
Получаем следующую ошибку:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006c726096, pid=5860, tid=6932
#
# JRE version: Java(TM) SE Runtime Environment (8.0_31-b13) (build 1.8.0_31-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.31-b07 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [R.dll+0x26096]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:UsersUSERNAMEDocumentsProjecths_err_pid5860.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Если я удалю опцию VM так, что java.библиотека.путь не указан, то я получаю следующую ошибку:
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:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
at com.coagsm.cs.fyp.Test.<clinit>(Test.java:11)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
2 ответа:
Как вы создаете экземпляр Rengine?
Это должно быть примерно так:
Rengine rengine = new Rengine(args, false, null);
Где, args может быть из вашего основного метода.
Дайте мне знать, если это сработает!
Последним (2018) для меня было сделать это : -
export R_HOME=$(R RHOME)
Затем скомпилируйте это: -
String[] enginargs = {"--no-save"}; REngine engine = org.rosuda.REngine.JRI.JRIEngine.createEngine(enginargs, null, false); try { engine.parseAndEval("print(\"Hello from R\");"); } catch(Exception e ) { System.err.println("OOps:-" + e.getMessage()); } finally { engine.close(); }
Затем при запуске java либо установите LD_LIBRARY_PATH для enclude JRI или установить - Джава.библиотека.путь eg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/R/site-library/rJava/jri/
Или
java -Djava.library.path=/usr/local/lib/R/site-library/rJava/jri/ MyMainClass