2014-04-22 2 views
0

Windows에서 Runtime.getRuntime(). exec (command)를 사용하는 방법?Windows에서 Runtime.getRuntime(). exec (command)를 사용하는 방법?

세 번째 시나리오에서
1. 
command = "cat data.json"; // works in linux terminal 
Runtime.getRuntime().exec(command) // runs in linux => Runs OK 

2. 
command = "type data.json"; // works in windows cmd 
Runtime.getRuntime().exec(command) // runs in windows => Fails to run 

3. 
command = "cmd /C type data.json"; // works in windows cmd 
Runtime.getRuntime().exec(command) // runs in windows => Runs OK 
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); // Output is empty 

, input.readLine()의 출력이 비어 있습니다,하지만 난 cmd를 명령 "유형 data.json"를 사용하는 경우, 그것은 JSON을 리눅스에서와 같은 방식으로 인쇄 해드립니다 "cat data.json". 무슨 일이 일어나고 있는지 혼란 스럽네요? 나는 윈도우와 리눅스 모두에서 COMMAND를 실행하고 싶다. 어떤 도움을 주셔서 감사합니다!

감사합니다.

+0

게시 된 코드에 'p'변수가 지정되어 있지 않습니까? –

답변

0

ProcessBuilder을 사용하여 프로세스에서 오류 스트림을 리디렉션 해보십시오. 모든 가능성 있음 명령은 STDErr에 쓰고 있습니다. Process.getErrorStream()을 사용하여 해당 스트림을 가져올 수도 있습니다.

관련 문제