Я начинающий программист, работающий в Eclipse на Windows XP, и мне нужно запустить несколько процессов, (это будет симуляция много-компьютерной системы ). В моем первоначальном хаке использовалось несколько потоков для нескольких классов, но теперь я пытаюсь заменить потоки процессами.
Из прочитанного я понял, что ProcessBuilder — это то, что нужно. Я пробовал много много версий ввода, которые вы видите ниже, но не могу понять, как правильно его использовать. Я пытаюсь запустить файлы.java, которые я ранее создал как классы (, которые я модифицировал). В конце концов я только что сделал фиктивный test.java, чтобы убедиться, что мой процесс работает правильно -, его единственная функция — печатать, что он запущен.
Мой код для двух файлов приведен ниже. Правильно ли я использую ProcessBuilder? Это правильный способ прочитать вывод моего подпроцесса? Любая помощь приветствуется.
Изменить:Решение состоит в том, чтобы объявить ProcessBuilder("java.exe","-cp","bin","Broker.test");
основной процесс
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();
}
}
}
подпроцесс
package Broker;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("This works");
}
}