我有一个用c++编写的可执行程序(cf.exe),它从几个文本文件(.txt)中获取参数,执行一些计算,并创建一个带有结果的文件(results.txt)。这个程序不需要交互。一旦执行,当计算完成后,它将自动关闭。
然后,我用Java编写了另一个程序,其中包含一个执行cf.exe的按钮。当按下按钮时,调用以下方法:
public void executeExternalProgram(){
String filePath = "C++" + File.separator + "cf.exe";
try {
System.out.println("Executing C++ exe...");
Process p = Runtime.getRuntime().exec(filePath);;
} catch (Exception e) {
e.printStackTrace();
}
}
我没有得到任何错误,但是当我按下按钮时,cf.exe没有被执行。当我手动执行cf.exe时,结果文件被正确创建。此外,我还尝试将其他程序(如notepad.exe)复制到同一文件夹中,并通过Java执行它,没有任何问题。有人知道为什么不行吗?
我发现更改给进程的命令可以使其正常工作。修改如下:
Process p = Runtime.getRuntime().exec("cmd /c start "+ filePath);
然后,按钮被按下时调用的方法的更新代码:
public void executeExternalProgram(){
String filePath = "C++" + File.separator + "cf.exe";
try {
System.out.println("Executing C++ exe...");
Process p = Runtime.getRuntime().exec("cmd /c start "+ filePath);
} catch (Exception e) {
e.printStackTrace();
}
}