Я пытаюсь написать программу, которая скомпилирует другой Java-файл из командной строки. Однако у меня проблема с этим. На этом этапе он успешно выполняет первую часть, где он компилирует Mocha.java. Однако я хочу, чтобы он также выполнял этот файл и отображал, что он выводит. Он ничего не отображает. Какие-либо предложения?Выполнение двух команд с помощью построителя процессов
pb = new ProcessBuilder("javac","Mocha.java");
try {
Process shell = pb.start();
OutputStream shellOut = shell.getOutputStream();
shellOut.write("java Mocha".getBytes());
shellOut.close();
InputStream shellIn = shell.getInputStream();
String response = IOUtils.toString(shellIn, "UTF-8");
System.out.println(response);
shellIn.close();
shell.destroy();
} catch (IOException ex) {
System.out.println("failed");
}
Примечание:
Я также попытался иметь все аргументы Initally так:
pb = new ProcessBuilder("javac","Mocha.java","&&","java","Mocha");
Но не только это не работа, это даже не компилировать Mocha.java, как это было выше.
Спасибо!
EDIT:
Так что я изменил это, чтобы сделать два процесса. Прекрасно работает, ребята! Для всех, кто интересуется:
pb = new ProcessBuilder("javac","Mocha.java");
try {
Process shell = pb.start();
int error = shell.waitFor();
shell.destroy();
if (error == 0)
{
pb = new ProcessBuilder("java","Mocha");
shell = pb.start();
InputStream shellIn = shell.getInputStream();
String response = IOUtils.toString(shellIn, "UTF-8");
System.out.println(response);
shellIn.close();
shell.destroy();
}
} catch (IOException ex) {
System.out.println("failed");
} catch (InterruptedException ex) {
}
Примечание: вы должны _at очень делать 'уровнем избыточности Thread.currentThread() прерывания()' 'при ловле InterruptedException'.. – fge
Я ценю это, я об этом не думал. – eatonphil