运行 来自 java 的 rscript 没有显示任何结果

Running rscript from java doesnt show any result

我正在使用 Rserve 从 java 调用 r 脚本。该程序运行并终止但不输出我想要的内容。在我的 R 脚本中,我有多个打印语句,所以理论上,当我的 java 程序运行时,它应该打印这些语句。但是我的 java 程序正在打印我的 rscript 的路径,而不是实际的 r 脚本内容。

我应该怎么做?我如何知道我的脚本 运行 是否正确?

R 脚本:

library(Rserve)
Rserve()
print(323325)
print("Hellow world this is an R script")
print("R script ran successfully")
print("Running")

Java 程序:

public static void main(String[] args) throws REXPMismatchException, REngineException{

        RConnection c = new RConnection();
        //REXP rengine = c.eval("R.version.string");
        //rengine = c.eval("source('./src/main/resources/Script/DB.R')");
        //System.out.println(rengine.asString());



        REXP rResponseObject = c.parseAndEval("try(eval('./src/main/resources/Script/DB.R'),silent=TRUE)");
        System.out.println(rResponseObject.asString());
        if (rResponseObject.inherits("try-error")) { 
            System.err.println("Error: " + rResponseObject.asString());
        }


    }

实际输出:

./src/main/resources/Script/DB.R

期望的输出:

[1] "Hellow world this is an R script" [1] "R script ran successfully" [1] "Running"

eval 计算一个表达式。 './src/main/resources/Script/DB.R' 是一个计算结果为自身的常量字符串。

您可能想要的是 source

我解决了这个问题。我的 r 脚本现在 运行 正确并执行了它应该执行的操作。

在我的 r 脚本文件中,我创建了一个函数并将我的整个 r 代码放入该函数中

在我的 java 程序中,我给出了我的 r 脚本的路径:

c.eval("source(\"DataPull.R\")");

然后我调用了我的 r 脚本的函数并检查了这样的错误:

REXP r = c.parseAndEval("try(eval(myAdd()),silent=TRUE)");
        if (r.inherits("try-error")) System.err.println("Error: "+r.asString());
            else System.out.println("Success eval 2");

成功了。

这是我的 java 程序文件:

public static void main(String[] args) throws REXPMismatchException, REngineException, IOException{

        RConnection c = new RConnection();
        c.eval("source(\"DataPull.R\")");
        REXP r = c.parseAndEval("try(eval(myAdd()),silent=TRUE)");
        if (r.inherits("try-error")) System.err.println("Error: "+r.asString());
            else System.out.println("Success eval 2");  
    }

这是我的 r 脚本文件:

myAdd <- function(){
  library(Rserve)
  Rserve()
  print(323325)
  print("Hellow world this is an R script")
  print("R script ran successfully")
  print("Running")   
}