当前位置: 首页 > 知识库问答 >
问题:

如何使用Java[重复]中的参数执行外部程序

颜志学
2023-03-14

我想在单击javafx应用程序的按钮(代码中不包含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位于我的项目中的一个包中。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个答案

凌鹏程
2023-03-14

我认为您对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();
    }
彭兴朝
2023-03-14

有一个专门重载的exec方法。它接受一个参数字符串数组,该数组保存命令和命令的参数。这似乎正是你所需要的。请查看API

 类似资料:
  • 问题内容: 我试图制作一个调用外部程序的应用程序,我必须传递两个参数。它没有任何错误。用c ++编写的program.exe可以拍照并修改txt文件的内容。Java程序可以运行,但是什么也没做 这是我的示例代码 问题答案: 从这里可耻地借来的

  • 这是一个初学者的问题。我正试图从cmd运行一个带有参数的java程序。这是我的课: 我可以在没有参数的情况下成功运行它。例如,我如何在程序中把5和6作为参数? 我在哪里找到了所有其他的答案,只是为了运行程序。我已经知道怎么做了。我无法找到如何使用参数运行程序。

  • 问题内容: 我想在C代码中执行另一个程序。例如,我要执行命令 是存在于同一文件夹中的程序,并且是参数。 程序创建一个文件,该文件将在我的代码中使用。 我该怎么做呢? 问题答案: 使用一种简单的方法: 将等待foo完成执行,然后返回一个状态变量,您可以使用该变量检查例如exitcode(命令的exitcode乘以256,因此将system()的返回值除以该值即可得到实际的exitcode:)。 的联

  • 问题内容: 我正在尝试从Java代码执行程序。这是我的代码: 我的操作系统是Mac OS X 10.6。 如果我从方法中删除,则所有文件名都将打印在控制台上。但是我需要将其打印到文件中。 另外,如果我将命令更改为: 并在Windows上运行,它也可以运行并在文件中完美打印结果。 我已经阅读了其他文章,以期从Java执行另一个应用程序,但似乎都与我的问题无关。 我会很感激我能得到的任何帮助。 谢谢,

  • 问题内容: 我是Swift的新手,我没有发现任何有关使用Swing语言执行外部程序或访问外部进程的信息。 在语言开发的当前阶段是否可以做,还是应该改用Objective-C? 也许我的Swift程序中可以使用一些Objective-C库? 谢谢。 问题答案: 您可以使用运行外部程序。例如,从Circle和Square: