Аз съм начинаещ програмист, работещ в 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");
}
}