1

我尝试在 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",则代码可以运行,并且可以在控制台中看到输出。

4

2 回答 2

1

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

于 2012-09-09T12:06:20.787 回答
0

Redirect the command's output to a tempfile like "ls > tempt.txt". That might fix the problem

于 2012-09-09T12:06:54.820 回答