如何在java中运行.exe文件

时间:2016-05-09 18:51:02

标签: java exe

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

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",但显然应该像这样:(

3 个答案:

答案 0 :(得分:2)

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

只是这样做:

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

并添加相应的try catch

使用 processBuilder

ProcessBuilder p = new ProcessBuilder("C:\\Windows\\System32\\notepad.exe");
p.start();

答案 1 :(得分:2)

如果程序的工作目录试图从工作目录中加载文件,如果单击该文件显然有效,则可能存在问题但是如果你没有设置它,我认为不是从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();
    }

答案 2 :(得分:1)

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

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

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