如何从java代码在unix终端中执行外部工具?

时间:2012-09-09 12:01:44

标签: java shell unix command

我尝试在java代码中执行一个基本命令,即“java -version”。我的代码适用于shell命令,例如“ls”,“echo $ PATH”等。 我的代码:

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" );
        }
    }
}

代码无异常或错误,但没有输出。

如果String command =“ls”,代码可以工作,输出可以在控制台中看到。

2 个答案:

答案 0 :(得分:1)

检查您拥有的Process对象的.getErrorStream().getOutputStream()。您可能会看到一条错误消息,告诉您需要指定java可执行文件的完整路径才能使其正常工作。但是,如果原因不同,您应该在输出所提到的流的内容时看到。

答案 1 :(得分:0)

将命令的输出重定向到像“ls> tempt.txt”这样的临时文件。这可能会解决问题