0

さて、私はさまざまな方法を試しましたが、成功しませんでした。カスタム exe を実行し、出力を取得したいと考えています。コマンドプロンプトからは正常に実行されます。「dir」は正常に動作しますが、custom.exe は動作しません。コードは次のとおりです。

  List<String> command = new ArrayList<String>();
  command.add("cmd");          // Even removed these two lines
  command.add("/c");           // aka hail mary coding.
  //command.add("dir");
  command.add("custom.exe");   // even tried "c://custom.exe"

  String line;
  Process p = new ProcessBuilder(command).start();
  BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
  while ((line = input.readLine()) != null) {
    System.out.println(line);
  }

出力がまったく得られません。バッチファイルに配置すると、出力が得られます。%PATH% と何か関係があるような気がします。それに戻って...

編集-->このカスタムexeからの出力がエラーになることが判明したので、何が起こっているのかを確認するために、コードがあります:

  List<String> command = new ArrayList<String>();
  command.add(System.getenv("ProgramFiles(x86)") + "\\mydir\\custom.exe";

  String line;
  ProcessBuilder pb = new ProcessBuilder(command);
  pb.redirectErrorStream(true);
  Process p = pb.start();
  BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
  while ((line = input.readLine()) != null) {
    System.out.println(line);
  }

そして、それは熱いくそったれのように機能します。:)

4

1 に答える 1

2

線は必要ありません

command.add("cmd");
command.add("/c");

これは、バッチ ファイルにのみ必要です。実行可能ファイルへのフルパスを指定したいと思います。

多分出力はstderrにありますか?に置き換えp.getInputStream()てみてくださいp.getErrorStream()

于 2011-09-28T09:18:04.467 に答える