0

私はプロセス ビルダーを持っていますが、何らかの理由で動作しません.. 「test.jar」という名前の jar ファイルがあります。このコードを含む 1 つのクラスがあります..

package me.thefiscster510.debugger;

public class Main {
    public static void main(String[] args){
        System.out.print(System.getenv("APPDATA"));
        System.exit(0);
    }
}

次に、ボタンを持つ別の jar があります。これは、ボタンのイベント ハンドラーです。

public class buttonhandler implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent arg0){
        // TODO Auto-generated method stub
        ProcessBuilder pb;
        try {
            pb = new ProcessBuilder("java", "-jar", "test.jar");
            pb.environment().put("APPDATA", textfield.getText() == null ? System.getenv("APPDATA") : textfield.getText());
            Process p = pb.start();
        }catch(IOException e){
            e.printStackTrace();
        }

    }

}

コードは何もしません..ちょうどそこに座っている..コンソールに何も入れません.何も..何が起こっているのか誰か教えてもらえますか?

4

1 に答える 1

1

Java7 を使用している場合はpb.inheritIO()、プロセスを開始する前に呼び出す必要があります。これにより、プロセスの標準出力とエラーが親 Java プロセスのストリームにリダイレクトされます。次に、コンソールに出力されるはずです。

Java7 を使用していない場合は、呼び出して子プロセスの標準出力をキャプチャする必要があります。p.getInputStream() その後、そのデータを標準出力にコピーできます。これを行う最も簡単な方法は、IOUtils.copyを使用することです。

于 2014-03-04T23:55:38.130 に答える