How do I automatically start rserve from Java?

I write Java applications in the IntelliJ ide The application uses the rserve package to connect to R and perform some functions When I want to run my code for the first time, I must start r on the command line and start rserve as the daemon. It looks like this:

R
library(Rserve)
Rserve()

After doing this, I can easily access all functions in R without any errors However, since this java code will be bundled into an executable file, there is a way to automatically call rserve () after the code runs, so I have to skip the manual step of starting rserve using the command line?

Solution

This is the code of the class I wrote to make rserve work from 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
            Sy@R_404_2354@.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                Sy@R_404_2354@.out.println(s);
            }

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

          //  Sy@R_404_2354@.exit(0);

        }
        catch (IOException e) {
            Sy@R_404_2354@.out.println("exception happened - here's what I kNow: ");
            e.printStackTrace();
            Sy@R_404_2354@.exit(-1);
        }
    }
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>