6

我正在尝试设置 Java/R 接口(捆绑在 R“rJava”包中),但我遇到了一些麻烦(尽管在这里和其他论坛上尝试了很多建议)。

我正在运行 Windows 7、jdk1.7.0_05、Eclipse、R 2.15.2。这些都是 64 位安装。

我尝试运行示例的步骤如下:

  1. 在 R GUI 中安装 rJava: install.packages('rJava') - 安装到 C:\Users\USERNAME\Documents\R\win-library\2.15\rJava\
  2. 设置环境变量:R_HOME = "C:\Program Files\R\R-2.15.2",添加到 PATH = "C:\Program Files\Java\jdk1.7.0_05\bin";"C:\Program Files\ Java\jdk1.7.0_05\jre\bin\server";"C:\Program Files\R\R-2.15.2\bin\x64";"C:\Users\USERNAME\Documents\R\win-library\ 2.15\rJava\jri\x64"
  3. 在 Eclipse 中设置示例项目,设置 VM 参数:-Djava.library.path="C:\Users\USERNAME\Documents\R\win-library\2.15\rJava\jri\x64"
  4. 重新启动 R 并使用命令加载 rJava:libraries('rJava')
  5. 运行示例程序,得到如下异常:

找不到 JRI 原生库!请确保 JRI 本机库位于 java.library.path 中列出的目录中。

java.lang.UnsatisfiedLinkError: C:\Users\USERNAME\Documents\R\win-library\2.15\rJava\jri\x64\jri.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
    at test.JRITest.main(JRITest.java:64)

我已验证“java.library.path”已按预期设置,因为: System.out.println("JLP = " + System.getProperty("java.library.path")); 输出正确的路径。

我认为 rJava 可能尚未完全安装(已尝试重新安装),但我不确定如何检查。“...\rJava\jri”或其任何子目录中的唯一 JAR 是“JRI.jar”,并且示例目录似乎不完整。

有人对这里可能出现的问题有建议吗?

似乎 JRI 网站(http://www.rforge.net/JRI/index.html)今天已经关闭,不确定是否有人知道其他下载来源(除了直接从 CRAN 下载)。

谢谢。

4

5 回答 5

2

尝试将 R 目录中的所有 dll 文件(*.dll)复制到 JAVA_PATH/bin。之后加载 jri 本机库,如:

//Right under your R class
   static {
    System.loadLibrary("jri");      
   }

我有同样的问题并通过这种方法解决了。

谢谢

于 2014-01-10T13:30:23.500 回答
2

在阅读了很多帖子并尝试了很多不同的解决方案之后,它终于可以工作了。我使用的是 Windows 7 64 位,我将列出我为使其正常工作所做的步骤。

  1. 使用 R 安装包 rJavainstall.packages("rJava")
  2. 右键单击我的电脑 > 属性 > 高级系统设置 > 环境变量...
  3. 找到 Var PATH 或 CLASSPATH 并编辑,添加以下路径:C:\Program Files\R\R-3.4.0\bin\x64;C:\Users\ [用户名]\Documents\R\win-library\3.4 \rJava\jri\x64
  4. 转到 C:\Program Files\R\R-3.4.0\bin\x64 并复制所有 .dll 文件(这里它们是:R.dll、Rblas.dll、Rgraphapp.dll、Riconv.dll、Rlapack.dll)
  5. 过去他们在 C:\Program Files\Java\jdk1.8.0_144\bin
  6. 创建 java 项目时,请记住将 JRI.jar、JRIEngine.jar 和 Rengine.jar 添加到项目构建路径中。它们位于 C:\Users\ [用户名]\Documents\R\win-library\3.4\rJava\jri
  7. 做完这一切之后,我仍然得到一个错误,当我去 C:\Users\ [User Name]\Documents\R\win-library\3.4\rJava\jri\x64 并复制 jri.dll 时解决了并在我的 Java Project 中过去,如下图所示:

在此处输入图像描述

这是一个代码示例及其输出:

在此处输入图像描述

此示例检索自:http ://codophile.com/2015/04/15/how-to-integrate-r-with-java-using-rjava/

于 2017-09-22T11:48:52.397 回答
1

我有同样的问题。通过将 R bin 添加到路径解决(我的操作系统是 x64)。

path=C:\Program Files\R\R-3.2.2\bin\x64

无论如何,您可以通过使用此工具http://dependencywalker.com/找出哪个 dll 是依赖的

于 2016-06-01T22:45:07.003 回答
0

伙计们,经过几天的尝试和失败,我想出了我的最终解决方案,例如:

  • 必须将以下文件复制到目录C:/Program Files/RapidMiner/RapidMiner Studio/jre/bin/

    • jri.dllC:/Users/Public/Documents/Documentos/R/win-library/3.0/rJava/jri/x64/
    • 所有文件来自C:/Program Files/R/R-3.0.3/bin/x64/
  • so on RM Studio ToolstabPreferences选项,Start-uptab,勾选后Initialize extensions必须Extensions directoryC:\Program Files\RapidMiner\RapidMiner Studio\jre\bin\R.exe和on RtabNative lib必须是C:\Program Files\RapidMiner\RapidMiner Studio\jre\bin\jri.dll

容易,不是吗?谢谢大家的建议。

于 2015-03-27T17:50:39.217 回答
-1

这是另一种选择:将 dll 所在的 rJava 和 R 目录添加到 PATH 变量中,无论是在计算机级别还是在像这样的 ant 脚本中(例如,x64 用于 64 位安装,i386 用于 32 位安装,具体取决于您的本地安装):

<java fork="true" classname="${run.class}">
  <env key="PATH" path="C:/Users/myuser/Documents/R/win-library/3.0/rJava/jri/x64;C:/Program Files/R/R-3.0.2/bin/x64"/>
  <classpath>
     <path refid="run.test.classpath"/>
  </classpath>
</java>
于 2014-04-05T14:49:42.140 回答