Я начинающий программист, работающий в Eclipse в Windows XP, и мне нужно запустить несколько процессов (это будет симуляция многокомпьютерной системы). Мой первоначальный взлом использовал несколько потоков для нескольких классов, но теперь я пытаюсь заменить потоки процессами.Запустите файл .java с помощью ProcessBuilder
Из моего чтения я почерпнул, что ProcessBuilder - это путь. Я пробовал много много вариантов ввода, которые вы видите ниже, но не может для жизни меня выяснить, как правильно его использовать. Я пытаюсь запустить файлы .java, которые я ранее создал как классы (которые я изменил). Я в конечном итоге просто сделал фиктивный test.java, чтобы убедиться, что мой процесс работает правильно - его единственная функция - напечатать, что она работает.
Мой код для двух файлов приведен ниже. Я правильно использую ProcessBuilder? Является ли это правильным способом для чтения вывода моего подпроцесса? Любая помощь приветствуется.
- Дэвид
Edit: Решение объявить ProcessBuilder ("java.exe", "- ф", "бен", "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");
}
}
Точный синтаксис, который закончился работой, был ProcessBuilder («java.exe», »- cp », "бен", "Broker.test"). Благодаря! –
Если мой Broker.test зависит от другой банки, то как я могу добавить банку в ProcessBuilder? –
Я понял. Используется ProcessBuilder («java.exe», «- cp», «bin: example.jar», «Broker.test») –