关于 JRI 错误的问题

2022-09-03 05:10:00

我尝试在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;
        }

但是,每次我运行它。它在打印出来“创建Rengine(带参数)”后晕倒,从未成功打印出“Rengine创建,等待R”

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

有什么建议吗?非常感谢


答案 1

编号: http://www.rforge.net/JRI/

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

> 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 上运行 JRI 示例 Java 和 Eclipse

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

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

显然,它需要由以下人员运行: 。./run rtest

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

环境:

R_HOME = /Library/Frameworks/R.framework/Resources
PATH=/Library/Frameworks/R.framework/Resources/bin/

此外,示例运行 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

虚拟机参数:

-Djava.library.path=/Library/Frameworks/R.framework/Resources/library/rJava/jri/

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

/Library/Frameworks/R.framework/Resources/library/rJava/jri/JRI.jar. 

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

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


答案 2

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


推荐