web-dev-qa-db-ja.com

javaで外部プログラムを実行

2つのパラメーターを渡す必要がある外部プログラムを呼び出すアプリケーションを作成しようとしました。エラーは発生しません。c++で記述されたprogram.exeは写真を撮り、txtファイルの内容を変更します。 Javaプログラムは実行されますが、何もしません

ここに私のサンプルコードがあります

    String[] params = new String [3];
    params[0] = "C:\\Users\\user\\Desktop\\program.exe";
    params[1] = "C:\\Users\\user\\Desktop\\images.jpg";
    params[2] = "C:\\Users\\user\\Desktop\\images2.txt";
    Runtime.getRuntime().exec(params);
34
sqtd

here からこの恥ずかしさを借りた

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
  System.out.println(line);
}

詳細 こちら

コマンドの受け渡し方法に関するその他の問題 here および here

60
Steven

これは正しくない。 こちらRuntime.exec()の使用方法。また、より現代的ないとこ ProcessBuilder を試すこともできます。

Java Runtime.getRuntime()。exec()の代替

14
duffymo