如何在java中运行.exe文件

How to run .exe file in java

我知道之前有人问过,但这些答案似乎都不适合我。 我试图在java程序中运行.exe文件。 以下代码(我从Internet上获取)有效; 记事本开始。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.IOException;

public class start {
   public static void main(String args[])
   {
       try {
           Process p = Runtime.getRuntime().exec(new String[] {"C:\\Windows\\System32\
otepad.exe"
});
       } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }

}

但是当我将文件夹更改为包含我自己的.exe文件的文件夹时,它不会执行任何操作。 它甚至没有出错。 它刚刚开始和终止。 如果我双击文件夹本身中的文件,它只会打开并运行,因此文件本身可以正常工作。

所以,为了清楚起见,我将Process p更改为

1
2
Process p = Runtime.getRuntime().exec(new String[] {"C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe"
});

为什么这不起作用,我该如何解决?

更新:
所以我不必使用new String [],但这不能解决问题。 此外,使用ProcessBuilder(如答案部分中所说的kage0x3b)给出错误:"The constructor ProcessBuilder(String) is undefined"虽然它显然应该像那样工作:(


如果程序的工作目录尝试从工作目录中加载文件,如果点击这显然有效,可能会出现问题,但是如果你没有设置它,我认为不是从Java代码执行时。
尝试使用ProcessBuilder,然后设置工作目录:

1
2
3
4
5
6
7
8
9
10
    File file = new File("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe"
);
    ProcessBuilder processBuilder = new ProcessBuilder(file.getAbsolutePath());
    processBuilder.directory(file.getParentFile());

    try {
        processBuilder.start();
    } catch(IOException ex) {
        ex.printStackTrace();
    }


你不需要只运行一个应用程序的数组...

做就是了:

1
2
Process p = Runtime.getRuntime().exec("C:\\Windows\\System32\
otepad.exe"
);

并添加相应的try catch

使用processBuilder

1
2
3
ProcessBuilder p = new ProcessBuilder("C:\\Windows\\System32\
otepad.exe"
);
p.start();


谢谢大家的帮助,但不幸的是,你的答案都没有。 我设法找到了能够很好地运行我的代码的东西(根据我的主管的说法),所以我很开心。 这就是我现在正在使用的:

1
2
3
Runtime.getRuntime().exec("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe"
, null, new File("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\"));

出于某种原因,即使在我像以前一样使用它时也不会这样,但我决定不再提问了。 有用 :)
再次感谢您花时间尝试帮助我!