【问题标题】:Java R Interface (JRI) SetupJava R 接口 (JRI) 设置
【发布时间】:2013-10-06 17:01:10
【问题描述】:

我正在尝试设置 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 -库\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 下载除外)。

谢谢。

【问题讨论】:

  • 你解决过这个问题吗?

标签: java r interface jri


【解决方案1】:

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

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

我遇到了同样的问题,用这个方法解决了。

谢谢

【讨论】:

    【解决方案2】:

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

    1. 使用 R 安装包 rJava install.packages("rJava")
    2. 右键单击我的电脑 > 属性 > 高级系统设置 > 环境变量...
    3. 找到 Var PATH 或 CLASSPATH 并编辑,添加以下路径:C:\Program Files\R\R-3.4.0\bin\x64;C:\Users\ [用户名]\Documents\R\win-库\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\ [用户名]\Documents\R\win-library\3.4\rJava\jri\x64 和 复制 ​​jri.dll 并粘贴到我的 Java 项目中,如下图所示:

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

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

    【讨论】:

    • 我正在使用您描述的几乎相同的环境(Win 7 x64、JRE 1.8.0_144、Eclipse Oxygen)。我做了你上面描述的所有调整,但是我/你的示例程序在调用 Rengine 构造函数时仍然终止。您还有其他提示或调整可能会有所帮助吗?
    • 实际上,我正在与 Rserve 合作,它运行良好。也许您可以提供有关您遇到的错误的更多详细信息。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

        • jri.dll 来自C:/Users/Public/Documents/Documentos/R/win-library/3.0/rJava/jri/x64/
        • 来自C:/Program Files/R/R-3.0.3/bin/x64/的所有文件
      • 在 RM Studio Tools 选项卡上Preferences 选项,Start-up 选项卡上,检查 Initialize extensions 后,Extensions directory 必须是 C:\Program Files\RapidMiner\RapidMiner Studio\jre\bin\R.exe 并且在 R 选项卡上 Native lib 必须是 @ 987654333@

      很简单,不是吗?谢谢大家的建议。

      【讨论】:

        【解决方案5】:

        这是另一个选项:将 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>
        

        【讨论】:

          猜你喜欢
          • 2015-05-12
          • 2012-03-19
          • 1970-01-01
          • 2011-12-29
          • 1970-01-01
          • 2014-06-27
          • 2011-10-20
          • 2018-01-17
          • 2015-11-18
          相关资源
          最近更新 更多