2015-02-02 4 views
0
public void run() { 
    try { 
     Runtime rt = Runtime.getRuntime(); 
     Process pr = rt.exec("C:\\Windows\\System32\\cmd.exe"); 
     stdin = pr.getOutputStream(); 
     writer = new BufferedWriter(new OutputStreamWriter(stdin)); 
     writer.write("python setup.py py2exe"); 
     writer.close(); 
     BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
     String line=null; 
     while((line=input.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Я пытаюсь запустить строку «python setup.py py2exe» в командной строке через Java, однако, когда я запускаю код выше, он не работает (ошибок нет, но код должен создавать новые файлы в каталоге, но это не так).Запуск CMD с Java

Команда запускается отлично, если я помещаю ее непосредственно в командную строку.

Как это сделать через Java?

+0

Вы пробовали работает питона напрямую? Как насчет использования cmd/c python? – MadProgrammer

+0

Вы пробовали написать новую строку в поток после команды? – Xynariz

+0

@MadProgrammer Я просто попытался использовать 'writer.write (" cmd/c python ") и не имел радости. Это ты имел в виду? –

ответ

0

Я предлагаю вам использовать ProcessBuilder таким образом вы можете использовать inheritIO() и что-то подобное,

ProcessBuilder pb = new ProcessBuilder("python", "setup.py", "py2exe"); 
pb.inheritIO(); 
try { 
    Process p = pb.start(); 
    p.waitFor(); // <-- wait for the process to finish 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

Если бы я мог повышать это, я бы, но я не использовал переполнение стека. Это сработало отлично, спасибо вам большое! –

Смежные вопросы