1

Javaコードで「java -version」という基本的なコマンドを実行しようとしています。私のコードは、「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

コマンドの出力を「ls > tempt.txt」のような一時ファイルにリダイレクトします。それは問題を解決するかもしれません

于 2012-09-09T12:06:54.820 に答える