如何在Java

时间:2016-11-30 09:30:57

标签: java javafx

我想在我点击javafx app的按钮(代码中没有包含btn事件)之后启动带有Arguments的外部程序(其中一个参数是将Config文件加载到该外部程序)但是我想知道为什么它一直给我错误!

我的IDE是InjellJ IDEA社区版

我知道这个问题是重复的,但是在这个平台上给出的所有示例中都尝试过没有成功但是我的代码包含配置文件作为争论的一部分

这是代码

private String appDomain = Paths.get("").toAbsolutePath().normalize().toString();
private String exepath = appDomain+"\\src\\bin\\exeResources\\MyExe.exe";
private String exeargs = appDomain+"\\src\\bin\\exeResources\\MyExe.ppx silent-load";

try {
        Runtime r = Runtime.getRuntime();
        r.exec(exepath +" "+exeargs);
    } catch (IOException e) {

        e.printStackTrace();
    }

当我删除“ exeargs ”时,我收到了错误消息 CreateProcess error = 193,%1不是有效的Win32应用程序

让我很难知道“ exeargs ”是否可以使用上述代码段。

您的帮助将不胜感激

修改

我必须加载的exefile和execonfig位于我的项目**bin.exeResource**中的一个包中 通过

打印路径和参数
System.out.println(exepath+" "+exeargs);

给我

C:\Users\{MyUser}\OneDrive\IntelliJ IDEA Projects\MyProject Package\src\bin\exeResources\MyExe.exe ...\src\bin\exeResources\MyExe.ppx silent-load

带错误

CreateProcess error=193, %1 is not a valid Win32 application

2 个答案:

答案 0 :(得分:1)

我认为你对exe参数感到困惑。试试这个:

private String appDomain = Paths.get("").toAbsolutePath().normalize().toString();
private String exepath = appDomain + "\\src\\bin\\exeResources\\MyExe.exe";
private String exeargs = "silent-load";

try {
        Runtime r = Runtime.getRuntime();
        r.exec(exepath + " " + exeargs);
    } catch (IOException e) {

        e.printStackTrace();
    }

答案 1 :(得分:1)

有一个exec方法专门为您的目的而重载。它以String数组作为参数,该数组包含命令和命令的参数。这似乎正是你所需要的。请查看API