java - 如何在java中运行.exe文件

标签 java exe

我知道之前有人问过这个问题,但这些答案似乎都不适合我。我试图让一个 .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/

相关文章:

java - 将tomcat war迁移到JBoss

java - 更改函数原型(prototype)会生成 "cannot be resolved. It is indirectly referenced"错误

java - 如何用Java从包装好的Jar中提取文件

c++ -/Fe(名称 EXE 文件)不工作

java - 在java游戏中隐藏分数文件

Java - 如何使用 Excelsior JET 构建 exe?

java - Android http请求主线程错误

java - Hadoop 中的 Map Reduce 流程

java - java中的引用类型和C中的指针的区别

c++ - 如何检查可执行文件或 DLL 是在发布还是 Debug模式下构建的 (C++)