有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何跑步。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",而它显然应该是这样工作的:(


共 (3) 个答案

  1. # 1 楼答案

    如果程序试图从工作目录加载文件,那么它的工作目录可能会有问题。如果单击工作目录,显然会工作,但如果不设置,我认为从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. # 2 楼答案

    运行一个应用程序不需要一个数组

    只要做:

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

    并添加相应的try catch


    使用Process Builder

    ProcessBuilder p = new ProcessBuilder("C:\\Windows\\System32\\notepad.exe");
    p.start();
    
  3. # 3 楼答案

    谢谢你们的帮助,但不幸的是,你们的答案都不起作用。我设法找到了运行我的代码足够好的东西(据我的主管说),所以我很高兴。这就是我现在使用的:

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

    出于某种原因,即使我像以前那样使用它,它也不会起作用,但我决定不再问问题。有效:) 再次感谢您抽出时间来帮助我