Jri.dll существует, но не существует - как это может быть? - PullRequest
0 голосов
/ 29 марта 2019

После некоторой практики с консолью R я пытаюсь подключить ее к моей IDE (NetBeans).Поэтому я скачал и установил «rJava», но после некоторых попыток я застрял с проблемой, что IDE не видит библиотеку «jri.dll», хотя она находится в пути Java.Другие выходные данные кода видят этот файл.

NetBeand IDE, Windows 7, Java 8, 64x, PATH = -Djava.library.path = "C: \ Program Files \ R \ R-3.5.3 \ library \rJava \ jri \ x64 ", библиотеки в проекте - JRI, TestR, TestConsole, путь содержит jri.dll, R.dll, Rblas.dll, Rgraphapp.dll, Riconv.dll, Rlapack.dll

  1. public class Jri {
        public static void main(String[] args) {
            String[] paths = System.getProperty("java.library.path").split(";");
    
            for (String path : paths) {
                File file = new File(path + "/jri.dll");
                System.out.printf("file: %s  exists: %s%n", file, file.exists());
            }
            System.loadLibrary("jri.dll");
        }
    }
    

2.

public class TestR {

    public static void main(String args[]) {
        Runtime.getRuntime().loadLibrary("jri");
        System.out.println("Library Loaded.");
        if (!Rengine.versionCheck()) {
            System.err.println("Java version mismatch.");
            System.exit(1);
        }
        String my[] = {"--vanilla"};
        Rengine re = new Rengine(my, false, new TextConsole());
        if (!re.waitForR()) {
            System.out.println("Cannot load R");
            System.exit(1);
        }
        REXP result = re.eval("mean(1:6)");
        System.out.println("rexp: " + result.asDouble());
    }
}
  1. Вывод
file: C:\Program Files\R\R-3.5.3\library\rJava\jri\x64\jri.dll  exists: true
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jri.dll in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at testr.Jri.main(Jri.java:24)
C:\Users\KSmirnov\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
Возвращает
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\R\R-3.5.3\library\rJava\jri\x64\jri.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.Runtime.loadLibrary(Runtime.java:858)
    at testr.TestR.main(TestR.java:18)
C:\Users\KSmirnov\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

Как я могу заставить его работать?Заранее спасибо.

...