我正在 IntelliJ IDE 中编写 Java 应用程序。该应用程序使用 Rserve 包连接到 R 并执行一些功能。当我想第一次运行我的代码时,我必须在命令行中启动 R 并将 Rserve 作为守护进程启动,它看起来像这样:

R
library(Rserve)
Rserve()

这样做之后,我可以轻松访问 R 中的所有函数,而不会出现任何错误。但是,由于此 Java 代码将捆绑为可执行文件,因此有没有办法在运行代码后立即自动调用 Rserve(),这样我就必须跳过使用命令行启动 Rserve 的手动步骤?

最佳答案

这是我编写的 Class 代码,用于从 Rserve 获取 Java

public class InvokeRserve {
    public static void invoke() {
        String s;

        try {

            // run the Unix ""R CMD RServe --vanilla"" command
            // using the Runtime exec method:
            Process p = Runtime.getRuntime().exec("R CMD RServe --vanilla");

            BufferedReader stdInput = new BufferedReader(new
                    InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new
                    InputStreamReader(p.getErrorStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }

            // read any errors from the attempted command
            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }

          //  System.exit(0);

        }
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}

关于java - 如何从 Java 自动启动 Rserve?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32373372/

10-11 03:17