一,软件环境
win10 64位 + eclipse + jdk 1.7
二,使用JRI方式的步骤
2.1 首先安装rJava(两种方式)
(1) 使用命令install.packages("rJava")安装 ;
(2) 使用RGui的图形化界面安装;
程序包 --> 安装程序包 --> 选择CRAN (China (beijing 4) [https]) --> 选择rJava 确定即可;
2.2 修改环境变量;
(1) 在path中添加R_HOME变量(D:\Program Files\R\R-3.2.3)
(2) 在path中添加 %R_HOME%\bin;%R_HOME%\bin\i386;%R_HOME%\library\rJava\jri;%R_HOME%\library\rJava\jri\i386
2.3 建立java工程(Rtest)
(1), 首先到www.rforge.net/rJava下载JRI.jar、REngine.jar和JRIEngine.jar这三个文件,导入到Rtest中;
(2), 拷贝 rJava包安装目录下的jri/examples里有现成的例子(rtest.java和rtest2.java)到Rtest中;
(3), 运行测试;
三 ,运行结果失败!
3.1 出现如下异常
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
java.lang.UnsatisfiedLinkError: D:\Program Files\R\R-3.2.3\library\rJava\jri\jri.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
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 com.rtest.rtest.main(rtest.java:62)
大致意思就是 64位的JVM不能加载32位的 .dll文件;
然后我把原来的jri.dll文件替换成64位的jri.dll文件,测试运行控制台抛出如下异常:
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
java.lang.UnsatisfiedLinkError: D:\Program Files\R\R-3.2.3\library\rJava\jri\jri.dll: %1 不是有效的 Win32 应用程序。
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at org.rosuda.JRI.Rengine.(Rengine.java:19)
at R_Test.rtest.main(rtest.java:63)
后来观察R和rJava的安装目录发现,目录下包含x64和i386(32位)文件夹,所以把2.2步骤中的环境变量全部修改指向x64文件夹;具体如下:
%R_HOME%\bin;%R_HOME%\bin\x64;%R_HOME%\library\rJava\jri;%R_HOME%\library\rJava\jri\x64
然后重新启动eclipse(重新加载java.library.path变量) 很重要!!!
运行rtest.java和rtest2.java ;测试成功!
相关推荐
Java调用R语言源码是一种跨语言交互的技术,允许Java应用程序执行R语言的统计计算、数据处理或图形生成等功能。这种技术在数据科学领域尤其有用,因为R语言提供了丰富的统计库和优秀的数据可视化工具,而Java则有...
### Java调用R语言的方法详解 #### JRI (Java/R Interface) **简介:** JRI是一种允许Java程序通过单线程方式与R进行交互的工具。它能够将R的动态库加载到Java环境中,并提供一系列Java API来实现R的功能。JRI支持...
该资源是用Eclipse4.4 + jdk1.6(32位) + R3.2.3(32位)开发的,用Java通过JRI调用R的案例, 先启动R的计算引擎:Rengine Rengine re = new Rengine(new String[]{"--vanilla"},false,null); 然后,调用R里的rnorm()...
该资源是用Eclipse4.4 + jdk1.6(32位) +R3.2.3(位),开发的一个用Java通过JRI.jar来调用R语言的实例。在运行该代码之前,要在R里安装rJava包,即: install.packags("rJava") 该资料包含JRI.jar,当然,在R里安装完...
### Java调用R语言实现数据挖掘的关键知识点 #### 一、使用R开发数据挖掘平台 在数据科学领域,R语言以其强大的统计分析能力和丰富的库支持而受到广泛欢迎。结合Java的强大功能,可以构建高效的数据挖掘平台。为了...
具体到Java与R语言的整合,文中提出了三种主要的调用途径:进程方式、嵌入式模式JRI和远程调用模式Rserve。进程方式依赖于R环境提供的可执行文件Rscript.exe来运行R脚本,而嵌入式模式JRI则是将R引擎嵌入到Java应用...
Java与R语言之间的通信可以通过多种方法实现,比如使用Rserve包、JRI包或者通过Java调用R语言命令行等。其中,Rserve包提供了一个服务器,允许远程连接和通信,而JRI(Java/R Interface)则提供了更底层的接口,它...
2. **Rserve**: Rserve是一个R语言的服务器,可以提供远程接口让其他程序(如Java)直接调用R函数。Java通过Rserve的API与R进行交互,这种方式更高效且易于管理。 3. **JRI (Java-R Interface)**: JRI是R的Java绑定...
本篇将详细探讨如何通过Rserve来实现Java调用R脚本,从而在Java程序中充分利用R语言的功能。 Rserve是一个开源的R语言服务端,它允许远程客户端与R环境进行通信,执行R脚本并获取结果。这使得Java等其他语言能够...
当需要在Java应用程序中集成R语言的功能时,JRI(Java-R Interface)和其相关的组件如JRIEngine和REngine就起到了关键作用。 标题"JRI&&JRIEngine;&&REngine;.zip"所提及的是一个包含Java调用R语言所需的核心组件的...
Java与R语言的交互是现代数据科学和软件开发中的一项重要技术。这两种语言各有优势,Java以其强大的企业级应用能力和跨平台性而著名,而R则在统计分析和数据可视化领域独占鳌头。本资源旨在帮助开发者了解如何在Java...
然而,有时我们需要将R语言的功能融入到Java应用程序中,这就需要用到我们今天要讨论的三个关键组件:JRI.jar、JRIEngine.jar和REngine.jar。 JRI,全称为Java-R Interface,是由Rserve项目提供的一个Java接口,它...
在IT行业中,R语言是一种广泛使用的统计计算和图形绘制的编程环境,尤其在数据分析和机器学习领域备受青睐。为了在Java环境中与R进行交互,开发者通常会利用特定的库或工具,而这些jar包就是实现这种交互的关键组件...
Java Native Interface(JNI)是Java开发中的一个重要概念,它允许Java代码与其他语言编写的代码进行交互,尤其是与C或C++编写的本地应用程序接口(API)进行交互。JNI在Java应用程序中扮演着桥梁的角色,使得Java...
参考JRI Java / R接口 从Java调用R 系统要求玛文从源代码编译JRI以获取JRI.jar和本机库(Linux中的libjri.so) 在此示例中,同时提供了JRI.jar和Linux x64的本机库安装和配置R sudo yum安装R 导出R_HOME = / usr / ...
这里是Java调用R的api java可以通过Rserve方式.也可以通过JRI方式
java原始源码引擎 REngine 是一个通用的 Java 接口,用于支持多个后端,例如 和 。 它允许 Java 代码评估 R 表达式、推送和拉取数据。 由于它与后端无关,因此可以使用相同的代码将 R 嵌入 Java 进程或使用 R 服务器...
rJava是连接R和Java的重要桥梁,使得Java应用程序可以直接调用R脚本中的函数和执行R命令。 1. **下载rJava** - 在R中使用命令 `install.packages("rJava")` 来安装rJava包。 - 也可以从R的操作程序中直接下载。 ...