关于JRI错误的问题

16 java r

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

    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;
        }
Run Code Online (Sandbox Code Playgroud)

但是,每次我运行它.打印出"创建Rengine(带参数)"之后,它终止了"创建Rengine,等待R"

我不知道什么是正确的输入参数,我试图在eclipse运行配置的程序参数下添加"--no-save",但仍然无济于事.

有什么建议?非常感谢

小智 27

参考:http://rosuda.org/JRI/

  • 必须正确设置R_HOME
  • (Windows):包含R.dll的目录必须位于PATH中
  • (Mac):嗯,它是Mac,所以它只是工作;).
  • (unix):必须使用--enable-R-shlib编译R,并且包含libR.so的目录必须在LD_LIBRARY_PATH中.此外,libjvm.so和其他相关Java库必须位于LD_LIBRARY_PATH上.
  • JRI库必须位于当前目录或java.library.path中列出的任何目录中.
  • 或者,您可以在启动JVM时使用-Djava.library.path =指定其路径.当您使用后者时,请确保首先检查java.library.path属性,这样您就不会破坏Java.
  • 根据您的系统,R verison和您要使用的其他功能,您可能必须设置其他设置,例如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的一部分.

> 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!}"
Run Code Online (Sandbox Code Playgroud)

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

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

rtest.java编译但它没有作为一个Java应用程序运行.

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

在检查了rJava包(内部./jri/)附带的"run"shell脚本之后,我在Eclipse运行配置中设置了这些脚本:

Environnment:

R_HOME = /Library/Frameworks/R.framework/Resources
PATH=/Library/Frameworks/R.framework/Resources/bin/
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

VM参数:

-Djava.library.path=/Library/Frameworks/R.framework/Resources/library/rJava/jri/
Run Code Online (Sandbox Code Playgroud)

JRI.jar现在在构建路径中引用,它是:

/Library/Frameworks/R.framework/Resources/library/rJava/jri/JRI.jar. 
Run Code Online (Sandbox Code Playgroud)

这会自动显示在-cp运行配置的选项卡下.

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


Dr *_*r G 1

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