java 调用 r, Can't find dependent libraries
import org.rosuda.JRI.Rengine; /**
* Created by shida.min on 2015/10/27.
*/
public class DemoRJava {
static {
System.loadLibrary("jri");
}
public static void main(String[] args) {
DemoRJava demo = new DemoRJava();
demo.callRJava(args);
}
// -Djava.library.path="C:\Program Files\R\R-3.2.2\library\rJava\jri\x64"
public void callRJava(String[] args) {
System.out.println(System.getProperty("java.library.path"));
Rengine re = new Rengine(args, false, null);
if (!re.waitForR()) {
System.out.println("Cannot load R");
return;
} //打印变量
String version = re.eval("R.version.string").asString();
System.out.println(version); //循环打印数组
double[] arr = re.eval("rnorm(10)").asDoubleArray();
for (double a : arr) {
System.out.print(a + ",");
}
re.end();
} }
在工程中导入JRI.jar, JRIEngine.jar, REngine.jar三个包。
使用 IntelliJ idea 作为 java IDE, 设置VM options:
-Djava.library.path="C:\Program Files\R\R-3.2.2\library\rJava\jri\x64"
首次运行后报错:
java.lang.UnsatisfiedLinkError: C:\Program Files\R\R-3.2.2\library\rJava\jri\x64\jri.dll: Can't find dependent libraries
Disconnected from the target VM, address: '127.0.0.1:49750', transport: 'socket'
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1855)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at com.xy.DemoRJava.<clinit>(DemoRJava.java:10)
Exception in thread "main"
试了许多办法,都没用,后来在http://stackoverflow.com/questions/19100875/java-r-interface-jri-setup 上找到方法。
把R目录下的所有*.dll文件都拷贝到jdk的bin目录下,并在程序中加上
static {
System.loadLibrary("jri");
}
测试通过,mark。
java 调用 r, Can't find dependent libraries的更多相关文章
- Rsession让Java调用R更简单
Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- JAVA 调用 R 语言之升华篇
由于项目的需要,最近做了一个javaWeb调用R的组件,在这里,我把自己走的一些弯路给大家总结一下: 一.选取什么插件作为java和R之间的通信? 1. 在传统的方式中,大致可以分为两类:一类是JRI ...
- JAVA 调用 R 语言
1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...
- Java调用R语言
R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...
- Java 调用R 方法
JAVA 调用 R 语言 1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面, ...
- JAVA调用R脚本
0 前言R是一种非常方便易用的绘图.统计分析.ML算法设计方面的脚本语言.实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型,那 ...
- opencv 无法使用 dll 动态链接库 UnsatisfiedLinkError java.library.path Can't find dependent libraries
System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 使用如上方法加载本地 dll文件. 一般会出现两种错误: 1. UnsatisfiedLinkError ja ...
- JAVA调用R
JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的 ...
- Rserve, java调用R源文件
Rserve安装和加载: install.packages("Rserve") library("Rserve") Rserve() java调用: REn ...
随机推荐
- Mybatis-动态 SQL
MyBatis 的强大特性之一便是它的动态 SQL. 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省 ...
- 从零开始学习Node.js例子二 文本提交与显示
index.js var server = require("./server"); var router = require("./router"); var ...
- C#中using关键字的作用及用法
using的用途和使用技巧. 1. 引用命名空间 2. 为命名空间或类型创建别名 3. 使用using语句 1. 引用命名空间,这样可以在程序中引用命名空间的类型而不必指定详细的命名空间. a ...
- 7个你可能不认识的CSS单位:rem vh vw vmin vmax ex ch
rem 我们首先介绍下和我们熟悉的很相似的货.em 被定义为相对于当前对象内文本的字体大小.炒个栗子,如果你给body小哥设置了font-size字体大小,那么body小哥的任何子元素的1em就是等于 ...
- Timer和TimerTask的用法
最近在做java课程设计的时候,我用到了timer,于是学习了一下timer的用法. java实现多线程比较常用的两种方法,一种是直接继承Thread类,另一种则是实现Runnable接口.Timer ...
- Cacti-安装和使用详解
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmp get来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RR ...
- 2W+汉字转拼音JS字库(UTF-8生僻字等通用无乱码)
测试页面 <html> <head> <script Language="JavaScript" src="pinyin.js"& ...
- CSS 分组
选择器分组 假设希望 h2 元素和段落都有灰色.为达到这个目的,最容易的做法是使用以下声明: h2, p {color:gray;} 将 h2 和 p 选择器放在规则左边,然后用逗号分隔,就定义了一个 ...
- [solr] - suggestion
前文使用了SpellCheck做了个自动完成模拟(Solr SpellCheck),使用第一种SpellCheck方式做auto-complete,是基于动态代码方式建立内容,下面方式可通过读文件方式 ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...