2014-12-29 5 views
0

У меня есть этот код, который отлично работает в Windows:Процесс Перенаправление Linux Java

//We create the process and pipe it out and in 
        if (isWindows(OS)) { 
         shell="cmd.exe"; 
        } 
        else{ 
         shell="/bin/sh"; 
        } 

        ProcessBuilder processBuilder = new ProcessBuilder(shell).redirectInput(Redirect.PIPE) 
          .redirectOutput(Redirect.PIPE).redirectError(Redirect.PIPE); 
        Process process = processBuilder.start(); 
        final BufferedReader ProcessIN = new BufferedReader(new InputStreamReader(process.getInputStream())); 
        final BufferedReader ProcessERROR = new BufferedReader(new InputStreamReader(process.getErrorStream())); 
        final BufferedWriter ProcessOUT = new BufferedWriter(new OutputStreamWriter(process.getOutputStream())); 

Проблема заключается в том, что я хочу работать на Linux/MacOS тоже, и он не компилируется, так как библиотека java.lang.ProcessBuilder.Redirect не входит. Есть ли какой-либо эквивалент, который я могу использовать в этом случае?

Спасибо

+0

Если он собирает на одной версии, а не другой, это означает, что вы другую версию Java, ОС вы делаете он не должен иметь никакого значения. –

ответ

0

Найдено, как он работает для обеих ОС:

Process process = Runtime.getRuntime().exec (shell); 
        OutputStream stdin = process.getOutputStream(); 
        InputStream stderr = process.getErrorStream(); 
        InputStream stdout = process.getInputStream(); 

        final BufferedReader ProcessIN = new BufferedReader (new InputStreamReader(stdout)); 
        final BufferedReader ProcessERROR = new BufferedReader (new InputStreamReader(stderr)); 
        final BufferedWriter ProcessOUT = new BufferedWriter(new OutputStreamWriter(stdin)); 
Смежные вопросы