Java R接口(JRI)安装程序

时间:2013-09-30 18:07:15

标签: java r interface jri

我正在尝试设置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 \ 64"
  3. 在Eclipse中设置示例项目,设置VM参数:-Djava.library.path =“C:\ Users \ USERNAME \ Documents \ R \ win-library \ 2.15 \ rJava \ jri \ x64”
  4. 使用命令:libraries('rJava')
  5. 重新启动R并加载rJava
  6. 运行示例程序,获取以下异常:
  7. 找不到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”,而examples目录似乎不完整。

    有没有人对这里可能出错的地方有什么建议?

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

    感谢。

5 个答案:

答案 0 :(得分:2)

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

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

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

THX

答案 1 :(得分:1)

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

  1. 使用R install.packages("rJava")
  2. 安装软件包rJava
  3. 右键点击我的电脑&gt;属性&gt;高级系统设置&gt;环境变量......
  4. 查找Var PATH或CLASSPATH并编辑,添加以下路径:C:\ Program Files \ R \ R-3.4.0 \ bin \ x64; C:\ Users \ [User Name] \ Documents \ R \ win-库\ 3.4 \ rJava \ JRI \ 64
  5. 转到C:\ Program Files \ R \ R-3.4.0 \ bin \ x64并复制所有.dll文件(这里是:R.dll,Rblas.dll,Rgraphapp.dll,Riconv.dll,Rlapack .DLL)
  6. 在C:\ Program Files \ Java \ jdk1.8.0_144 \ bin
  7. 过去
  8. 在创建java项目时,请记住将JRI.jar,JRIEngine.jar和Rengine.jar添加到项目构建路径中。它们位于C:\ Users \ [用户名] \ Documents \ R \ win-library \ 3.4 \ rJava \ jri
  9. 完成所有这些后,我仍然收到错误,当我转到C:\ Users \ [用户名] \ Documents \ R \ win-library \ 3.4 \ rJava \ jri \ x64和复制jri.dll并过去我的Java Project ,如下图所示:
  10. enter image description here

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

    enter image description here

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

研究员,经过几天尝试和失败后,我想出了我的最终解决方案,如:

  • 必须将以下文件复制到目录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 extensionsExtensions directory必须为C:\Program Files\RapidMiner\RapidMiner Studio\jre\bin\R.exe并且R标签Native lib必须为C:\Program Files\RapidMiner\RapidMiner Studio\jre\bin\jri.dll

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

答案 4 :(得分:0)

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

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

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