Процесс Java, выполнение команд не работает на машине Windows
Я выполняю SBT через процесс Java. Когда он выполняется, я хочу взаимодействовать с этим дочерним процессом (Java). Например, я хочу выполнить "show full-classpath". Это все работает на MAC и проверено! но тот же исходный код не работает на Windows! Кто-нибудь знает почему? Я также попытался расширить команду с помощью добавления "\n", "\n\n" и "\r\n". Вот код:
public Process makeProcess(String dir, String model) throws IOException {
List<String> command = new ArrayList<String>();
command.add("scala.bat");
Process process = null;
final ProcessBuilder pb = new ProcessBuilder();
pb.command(command);
pb.redirectErrorStream(true);
process = pb.start();
if (process == null) {
return null;
}
final BufferedReader stream = new BufferedReader(new InputStreamReader(
process.getInputStream(), Charset.defaultCharset()));
OutputStream o = process.getOutputStream();
Thread t = new Thread(new ConsoleListener(stream));
t.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("executing....");
o.write("show full-classpath\n".getBytes());
o.flush();
o.close();
return process;
}
public static void main(String[] args) throws Exception {
ProcessControl control = new ProcessControl();
control.makeProcess(null,null);
}
Я до сих пор в замешательстве, потому что когда я запускаю его с "cmd.exe" и "dir" в качестве команды, он работает и на машине с Windows..