1

其实我在工作Wolfram Mathematica,我们没有任何运行外部程序的功能,所以我想用Java技术做这个应用程序。

在我的组织中,C开发团队开发了一个应用程序并以一种格式提供给我们。.exe知道我想.exeJava.

我在目录下有一个.exe名字。ThMapInfratab1-2.exeC:/Users/Infratab Bangalore/Desktop/Rod's

一旦我们运行.exe文件,我会自动将.txt文件作为输入名称,就像TherInput.txt来自同一目录 ( C:/Users/Infratab Bangalore/Desktop/Rod's)

对于我的构象,我ThMapInfratab1-2.exe使用命令提示符以下列方式手动运行文件。它工作得很好。

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

最后,.exe文件将 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 实例的 Runtime 的 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 回答
0

你可以这样做:

Process process=Runtime.getRuntime().exec("C:\\Users\\Infratab Bangalore\\Desktop\\Rod's\\ThMapInfratab1-2.exe");
于 2013-07-24T06:33:08.057 回答
0
Process process=Runtime.getRuntime().exec("C:\Users\Infratab Bangalore\Desktop\Rod's>ThMapInfratab1-2.exe");
于 2013-07-24T06:33:08.827 回答