2012-09-09 3 views
1

자바 코드에서 "java -version"이라는 기본 명령을 실행하려고합니다. 내 코드 등 내 코드 "ls"의 예에서 쉘 명령은 "에코 $ 경로"작동합니다Java 코드에서 유닉스 터미널의 외부 도구를 실행하는 방법은 무엇입니까?

import java.io.*; 

public class cmd { 
    public static void main(String[] args) { 

     String command = "java -version"; 
     Process proc = null; 
     try { 
      proc = Runtime.getRuntime().exec(command); 
     } catch (IOException e1) { 
      System.out.println("IOException 1"); 
     } 

     BufferedInputStream buffer = new BufferedInputStream(proc.getInputStream()); 
     BufferedReader commandOutput= new BufferedReader(new InputStreamReader(buffer)); 
     String line = null; 
     try { 
      while ((line = commandOutput.readLine()) != null) { 
       System.out.println(line); 
      } 
      commandOutput.close(); 
     } catch (IOException e) { 
      System.out.println("IOException 2"); 
     } 
    } 
} 

코드는 예외 또는 오류없이 작동하지만 출력이되지 않습니다.

문자열 명령 = "ls"인 경우 코드가 작동하고 콘솔에서 출력을 볼 수 있습니다.

답변

1

갖고있는 Process 개체의 .getErrorStream().getOutputStream()을 확인하십시오. 이 기능을 사용하려면 Java 실행 파일의 전체 경로를 지정해야한다는 오류 메시지가 표시 될 수 있습니다. 그러나 이유가 다른 경우에는 언급 된 스트림의 내용을 출력 할 때도이를 확인해야합니다.

+0

도구의 전체 경로를 지정하면 유용하고 효과적입니다. 고맙습니다. – hcakmak

+0

어쨌든 적어도 오류 스트림 출력을 가져와야합니다. 오류 경로를 제외하고 잘못된 경로를 제외하고 다른 오류가 있으면 정보가 없습니다. – eis

+0

ps. 이 답변으로 문제가 해결되었다고 생각되면 답변을 수락 된 것으로 표시하십시오. – eis

0

명령 출력을 "ls> tempt.txt"와 같은 임시 파일로 재 지정하십시오. 문제가 해결 될 수도 있습니다.

+0

리디렉션이 작동하지 않았습니다. 파일이 생성되지 않습니다. – hcakmak

관련 문제