Run a .java file using ProcessBuilder

Posted by David K on Stack Overflow See other posts from Stack Overflow or by David K
Published on 2012-04-10T17:15:18Z Indexed on 2012/04/10 17:29 UTC
Read the original article Hit count: 398

I'm a novice programmer working in Eclipse, and I need to get multiple processes running (this is going to be a simulation of a multi-computer system). My initial hackup used multiple threads to multiple classes, but now I'm trying to replace the threads with processes.

From my reading, I've gleaned that ProcessBuilder is the way to go. I have tried many many versions of the input you see below, but cannot for the life of me figure out how to properly use it. I am trying to run the .java files I previously created as classes (which I have modified). I eventually just made a dummy test.java to make sure my process is working properly - its only function is to print that it ran.

My code for the two files are below. Am I using ProcessBuilder correctly? Is this the correct way to read the output of my subprocess? Any help would be much appreciated.

  • David

primary process

package Control;
import java.io.*;
import java.lang.*;

public class runSPARmatch {

/**
 * @param args
 */
public static void main(String args[]) {
    try {       
        ProcessBuilder broker = new ProcessBuilder("javac.exe","test.java","src\\Broker\\");
        Process runBroker = broker.start();

        Reader reader = new InputStreamReader(runBroker.getInputStream());
        int ch;
        while((ch = reader.read())!= -1)
            System.out.println((char)ch);
        reader.close();

        runBroker.waitFor();

        System.out.println("Program complete");

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

subprocess

package Broker;

public class test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("This works");
    }
}

© Stack Overflow or respective owner

Related posts about java

Related posts about multiprocessing