1

実際に私は働いWolfram Mathematicaていますが、外部プログラムを実行するための機能はありません。そのため、Java テクノロジを使用してこのアプリを実行したいと考えています。

私の組織では、C開発チームが 1 つのアプリケーションを開発し、ある形式で提供してくれ.exeまし.exeJava

ディレクトリの下に.exe名前があります。ThMapInfratab1-2.exeC:/Users/Infratab Bangalore/Desktop/Rod's

ファイルを実行すると.exe、自動的に同じディレクトリから.txtファイルを入力名として受け取ります ( )TherInput.txtC:/Users/Infratab Bangalore/Desktop/Rod's

私のコンフォメーションでThMapInfratab1-2.exeは、次の方法でコマンドプロンプトを使用してファイルを手動で実行します。うまく機能しています。

 C:\Users\Infratab Bangalore\Desktop\Rod's>ThMapInfratab1-2.exe

最後に、 .exefile は t.txtファイルを出力として同じディレクトリ ( C:/Users/Infratab Bangalore/Desktop/Rod's) にエクスポートします。

これらと同じことを、Java.can を使用して行いたいと思います。私のディレクトリについて説明してください。

このために、次のコードを書きましたが、機能しません。

import java.io.IOException;
public class ProcessBuilderSample {

    public static void main(String args[]) throws IOException {
        Process process = new ProcessBuilder(
                "C:\\Users\\Infratab bangalore\\Desktop\\Rod's\\ThMapInfratab1-2.exe")
                .start();
    }
}

誰かが知っているなら、私に提案してください。

ありがとう。

.

4

3 に答える 3

0

Process インスタンスを返すランタイムの exec() メソッドを実行するか、ProcessBuilderクラスのメソッドを使用する必要があります。

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("C:\\Users\\Infratab Bangalore\\Desktop\\Rod's\\ThMapInfratab1-2.exe");

ProcessBuilder を次のように使用できます。

 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 File log = new File("log");
 pb.redirectErrorStream(true);
 pb.redirectOutput(Redirect.appendTo(log));
 Process p = pb.start();
 assert pb.redirectInput() == Redirect.PIPE;
 assert pb.redirectOutput().file() == log;
 assert p.getInputStream().read() == -1;
于 2013-07-24T06:32:56.910 に答える