首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于JRI错误的问题

关于JRI错误的问题
EN

Stack Overflow用户
提问于 2011-01-04 23:49:41
回答 5查看 23.5K关注 0票数 16

我尝试在Java中运行R脚本,因此我安装了JRI。并运行示例,我在64位windows 7上使用Eclipse。示例代码的一部分如下:

代码语言:javascript
复制
    public static void main(String[] args) {
        System.out.println("Creating Rengine (with arguments)");
 Rengine re=new Rengine(args, false, null);
        System.out.println("Rengine created, waiting for R");
 if (!re.waitForR()) {
            System.out.println("Cannot load R");
            return;
        }

然而,每次我运行它。在打印出"Creating Rengine (with arguments)“从未成功打印出"Rengine created,waiting for R”后,它停止了。

我不知道什么是正确的输入参数,我已经尝试在eclipse运行配置的Program参数下添加"--no-save“,但仍然没有帮助。

有什么建议吗?非常感谢

EN

回答 5

Stack Overflow用户

发布于 2011-04-29 12:18:08

参考:http://www.rforge.net/JRI/

必须设置启用

  • R_HOME包含R.dll的目录必须在您的路径中

  • (Mac):嗯,它是Mac,所以它可以正常工作;)。

  • (Unix):r必须使用--

  • -R-shlib编译,包含libR.so的目录必须在LD_LIBRARY_PATH中。另外,JVM和其他相关的Java库必须位于LD_LIBRARY_PATH.

  • JRI库中,必须位于当前目录或java.library.path.

  • Alternatively中列出的任何目录中,您可以在启动libjvm.so时使用-Djava.library.path=指定其路径。使用后者时,请确保首先检查java.library.path属性,以免破坏系统上的Java.

  • Depending、R版本和要使用的其他功能,您可能需要设置其他设置,如R_SHARE_DIR、R_INCLUDE_DIR和R_DOC_DIR。

我自己的笔记:

在Mac上安装R:

参考:http://cran.r-project.org/mirrors.html参考:http://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html

http://cran.csiro.au/下载了MacOSX二进制R-2.13.0.pkg

在Mac OS X上安装Java Interface for R (JIR)

参考:http://www.rforge.net/JRI/

JIR现在是rJava的一部分。

代码语言:javascript
复制
> install.packages("rJava")
--- Please select a CRAN mirror for use in this session ---
trying URL 'http://cran.csiro.au/bin/macosx/leopard/contrib/2.13/rJava_0.8-8.tgz'
Content type 'application/x-gzip' length 769006 bytes (750 Kb)
opened URL
==================================================
downloaded 750 Kb


The downloaded packages are in
    /var/folders/ZZ/ZZ7tAIJsFU8FDfPPp7H53++++TM/-Tmp-//RtmpCHz9Mh/dow

> library(rJava)
> .jinit()
> s <- .jnew("java/lang/String", "Hello World!")
> print(s)
[1] "Java-Object{Hello World!}"

在Mac OS X上使用Eclipse运行JRI示例Java

将rJava/jri/examples/rtest.java复制到Eclipse JRI/src/。将jri目录中的JRI.jar复制到JRI/lib/,并将其添加到构建路径中。

rtest.java可以编译,但不能作为Java应用程序运行。

显然,它需要由./run rtest运行。

在检查了rJava包(在./jri/中)附带的" run“外壳脚本之后,我已经在Eclipse run configuration中设置了这些脚本:

环境:

代码语言:javascript
复制
R_HOME = /Library/Frameworks/R.framework/Resources
PATH=/Library/Frameworks/R.framework/Resources/bin/

此外,示例运行shell脚本还设置了以下环境变量:

代码语言:javascript
复制
R_INCLUDE_DIR=Library/Frameworks/R.framework/Resources/include
R_SHARE_DIR=Library/Frameworks/R.framework/Resources/share
R_DOC_DIR=Library/Frameworks/R.framework/Resources/doce
JRI_LID_PATH=Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/bin

VM参数:

代码语言:javascript
复制
-Djava.library.path=/Library/Frameworks/R.framework/Resources/library/rJava/jri/

JRI.jar现在在构建路径中被引用,即:

代码语言:javascript
复制
/Library/Frameworks/R.framework/Resources/library/rJava/jri/JRI.jar. 

这会自动出现在run configuration中的-cp选项卡下。

此外,运行配置还需要一个程序参数:--save, --no-save or --vanilla

票数 27
EN

Stack Overflow用户

发布于 2011-01-05 03:14:21

它很可能找不到jri.dll或R.dll。如果您什么也看不到,甚至连异常都没有,那么JVM就会崩溃。查找像hs_pid*这样的文件,它应该会告诉您哪个库是罪魁祸首。

票数 1
EN

Stack Overflow用户

发布于 2012-06-12 14:56:50

我在Windows上与R的斗争中发现了这个问题,尽管在Linux上它刚刚起作用。

我也发现我得到了“创建Rengine (带参数)”,但没有进一步的内容。

它找到了jri.dll和R.dll,这是我能够证明的:

  • jri.dll -已将其从当前目录中删除,这会生成错误:

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

java.lang.UnsatisfiedLinkError: java.library.path中没有jri

(复制回来时,请确保采用正确的32位或64位版本,以避免"Can't load IA 32-bit .dll on a AMD64- bit platform“类型错误)

  • R.dll位于安装目录C:\Program Files\R\R-2.15.0\bin\x64下。如果run.bat文件中的路径设置不正确(以前是这样),则会出现略有不同的错误

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

java.lang.UnsatisfiedLinkError:当前DIR\jri.dll:找不到依赖库

在正确设置了这两件事之后(并且没有生成hs_pid*文件),我发现问题在于run.bat中缺少R_HOME。添加

代码语言:javascript
复制
set R_HOME=C:\Program Files\R\R-2.15.0\

修复了它,现在它似乎对我都起作用了。我不需要在脚本中添加--save、--no-save或--vanilla。此外,它有'runtest‘硬编码,所以./run.bat runtest2将不会驻留。

简而言之: Windows脚本被破坏了(而Linux的“run.bat”脚本是开箱即用的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4894002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档