2015-06-01 4 views
3

Я новичок в R и пытался вызвать простую программу тестирования rJava из java. Я сделал необходимые настройки пути, и когда Я пытаюсь создать экземпляр Rengine, код которого терпит неудачу. Проблема, похоже, связана с C [R.dll + 0x26036]. Однако я новичок в этом и не могу понять эту проблему. Любая помощь будет приветствоваться.Код возврата JRI 10

Мой код:

import org.rosuda.JRI.REXP; 
import org.rosuda.JRI.Rengine; 
public class First_R { 
public static void main (String args []) { 

    System.out.println("Start"); 
    Rengine.DEBUG = 5; 

    System.out.println("Starting Rengine.."); 
    System.out.println("R_HOME =" + System.getenv("R_HOME")); 
    final Rengine re = new Rengine(); 
    // Check if the session is working. 
    if (!re.waitForR()) { 
     return; 
    } 
    re.assign("x", new double[] {1.5, 2.5, 3.5}); 
    REXP result = re.eval("(sum(x))"); 
    System.out.println(result.asDouble()); 
    re.end(); 
} 

}

Выход:

Начало Запуск Rengine .. R_HOME = D: \ Program Files \ R \ R-3.2.0 \ bin \

В Java Runtime Environment обнаружена фатальная ошибка:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) при рс = 0x000000006c726036, PID = 4588, TID = 1872

JRE версии: Java (TM) SE Runtime Environment (8.0_45-b14) (сборка 1.8.0_45 -b14) Java VM: Java HotSpot (ТМ) 64-разрядный сервер ВМ (25,45-B02 смешанный режим окна-amd64 сжатого ой) Проблематичный рама: с [R.dll + 0x26036]

Не удался написать основной дамп. Минидампы не включена по умолчанию на клиентских версиях Windows,

Отчет об ошибке файл с дополнительной информацией сохраняется как:

+0

Установили ли вы параметры виртуальной машины? вам нужно настроить свои параметры виртуальной машины, например, в netbeans ive вставил следующий параметр для JRI -Djava.library.path = 'C: \ Program Files \ R \ R-2.15.3 \ library \ rJava \ jri \ x64' –

+0

. Вопрос заканчивается внезапно: «Файл с сообщением об ошибке с дополнительной информацией сохраняется как:« ...? –

+0

@YehoshaphatSchellekens, я добавил 'System.setProperty (" JRI "," -Djava.library.path = 'D:/Misc/RLib/rJava/jri/x64' ");' моему коду. Он по-прежнему возвращает ту же ошибку. Кроме того, как я установил rJava для моего exclipse, я установил путь для dll и JRI в моих предпочтениях. – Ayon

ответ

1

Вы должны инициализировать ваш Rengine. Попробуйте следующее:

Rengine re = new Rengine (new String [] {"--vanilla"}, false, null); 

при создании двигателя, и все должно работать. Конструктор без аргументов «создаст (а) новый движок, подключившись к существующему инициализированному экземпляру R, который вызывает этот конструктор» (из doc). Это вызывает ошибку, так как нет существующего Rengine (я думаю).

+1

Я пробовал это раньше, когда пытался отладить мою ошибку. Использование этой строки кода не вызывает ошибку трассировки стека, которую я напечатал в моем вопросе, но выполнение программы завершается с кодом возврата из 2. Используя режим отладки в eclipse, я вижу, что он работает в этой строке создания экземпляра Rengine. – Ayon

2

В Вашей настройке среды, пожалуйста, измените R_HOME на D:\Program Files\R\R-3.2.0 и не R_HOME = D:\Program Files\R\R-3.2.0\bin\, пожалуйста, дайте мне знать, если это делает работу :), обратите внимание, что ваш код работает для меня (с помощью советов Николы а)

package rundavid; 

import org.rosuda.JRI.REXP; 
import org.rosuda.JRI.Rengine; 



public class RunDavid { 


public static void main (String args []) { 



    System.out.println("R_HOME =" + System.getenv("R_HOME")); 


    Rengine re = new Rengine (new String [] {"--vanilla"}, false, null); 
    // Check if the session is working. 
    if (!re.waitForR()) { 
     return; 
    } 
    re.assign("x", new double[] {1.5, 2.5, 3.5}); 
    REXP result = re.eval("(sum(x))"); 
    System.out.println(result.asDouble()); 
    re.end(); 
}} 

выход:

run: 
R_HOME =C:\Program Files\R\R-2.15.3 
7.5 
BUILD SUCCESSFUL (total time: 0 seconds) 

Кроме того, необходимо настроить D:\Program Files\R\R-3.2.0\bin\x64;D:\Misc\RLib\rJava\jri\x64 Это вам нужно установить в виртуальной машине опций, а не как переменные среды. это, как его сделали в Netbeans (то, что им с помощью):

  1. правой кнопкой мыши на проекте, а затем нажмите на свойства
  2. Затем выберите run
  3. Вставьте параметры VM следующим образом: How to set VM options in Net beans
+0

все еще не работает для меня. Я что-то не так с настройками? Я публикую полный вывод здесь: – Ayon

+0

Можете ли вы разместить все переменные среды? –

+0

Вы правильно установили JAVA_HOME и PATH? –