如何在java中运行.exe文件

14 浏览
0 Comments

如何在java中运行.exe文件

我知道这个问题以前已经被问过了,但是那些答案似乎对我都不适用。我正在尝试在一个Java程序中运行一个.exe文件。下面这段代码(我从互联网上找到的)是可行的;记事本会打开。

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",尽管它应该可以这样工作 🙁

0
0 Comments

问题的原因是程序的工作目录可能有问题,如果程序试图从工作目录加载文件,则在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();
}

问题的解决方法参考了stackoverflow上的一个相关问题。还可能出现"The constructor ProcessBuilder(String) is undefined"的错误,可能是因为使用了错误的ProcessBuilder类。正确的ProcessBuilder类应该是java.lang.ProcessBuilder。重新启动计算机有时可以解决这个问题。

0
0 Comments

问题的原因是之前的解决方法都没有起作用,但是通过使用Runtime.getRuntime().exec()方法来运行.exe文件可以成功运行。原因可能是之前的方法存在某种问题,但是使用Runtime.getRuntime().exec()方法可以绕过这些问题。

解决方法是使用Runtime.getRuntime().exec()方法来运行.exe文件,并传入正确的文件路径作为参数。在这种情况下,还需要传入一个新的文件作为工作目录参数。

以下是一个示例代码,展示了如何使用Runtime.getRuntime().exec()方法来运行.exe文件:

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\\"));

通过使用这种方法,.exe文件应该能够成功运行。

另外,有其他用户提到虽然这种方法可以解决问题,但有时候.exe文件仍然无法通过Java代码启动。

0
0 Comments

如何在Java中运行.exe文件

问题的出现原因:

- 在尝试使用ProcessBuilder运行.exe文件时,出现了错误提示"The constructor ProcessBuilder(String) is undefined",这可能是因为使用了错误的ProcessBuilder类。

解决方法:

1. 使用Runtime.getRuntime().exec()方法运行.exe文件:

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

2. 使用ProcessBuilder运行.exe文件:

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

注意事项:

- 确保传入的文件路径是有效的,可以通过双击或在命令提示符中运行来验证。

- 如果出现错误提示"The constructor ProcessBuilder(String) is undefined",请检查是否导入了正确的ProcessBuilder类(java.lang.ProcessBuilder.ProcessBuilder)。

0