我知道之前有人问过这个问题,但这些答案似乎都不适合我。我试图让一个 .exe 文件在 java 程序中运行。以下代码(我从互联网上摘录的)有效;记事本启动。
import java.io.IOException;
public class start {
public static void main(String args[])
{
try {
Process p = Runtime.getRuntime().exec(new String[] {"C:\\Windows\\System32\\notepad.exe"});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但是当我将文件夹更改为包含我自己的 .exe 文件的文件夹时,它没有执行任何操作。它甚至没有给出错误。它只是开始和终止。如果我双击文件夹本身中的文件,它只会打开并运行,所以文件本身可以工作。
所以,为了清楚起见,我将 Process p
更改为
Process p = Runtime.getRuntime().exec(new String[] {"C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\\Release\\IntraFaceTracker.exe"});
为什么这行不通,我该如何解决?
更新:
所以我不必使用 new String []
但这并不能解决问题。此外,使用 ProcessBuilder(如 kage0x3b 在答案部分中所说)会给出错误:"The constructor ProcessBuilder(String) is undefined"
虽然它显然应该像那样工作:(
最佳答案
如果程序尝试从工作目录加载文件,则程序的工作目录可能存在问题,如果单击该目录显然可以工作,但我认为如果不设置它,则从 Java 代码执行时不会出现问题。 尝试使用 ProcessBuilder,然后设置工作目录:
File file = new File("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\\Release\\IntraFaceTracker.exe");
ProcessBuilder processBuilder = new ProcessBuilder(file.getAbsolutePath());
processBuilder.directory(file.getParentFile());
try {
processBuilder.start();
} catch(IOException ex) {
ex.printStackTrace();
}
关于java - 如何在java中运行.exe文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37123283/