Я начинающий программист, работающий в 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");
}
}