gpt4 book ai didi

java - ProcessBuilder 执行自定义可执行文件

转载 作者:行者123 更新时间:2023-12-02 08:10:14 25 4
gpt4 key购买 nike

好吧,我尝试了十几种不同的方法,但没有成功。我想执行自定义 exe 并获取输出。它在命令提示符下运行良好。我让“dir”工作正常,但custom.exe 不行。这是代码:

  List<String> command = new ArrayList<String>();
command.add("cmd"); // Even removed these two lines
command.add("/c"); // aka hail mary coding.
//command.add("dir");
command.add("custom.exe"); // even tried "c://custom.exe"

String line;
Process p = new ProcessBuilder(command).start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}

我根本没有得到任何输出。如果我将其放入批处理文件中,我会得到输出。我感觉它与%PATH% 有关。回过头来...

编辑-->结果是这个自定义exe的输出出错了,所以为了看看发生了什么,我有代码:

  List<String> command = new ArrayList<String>();
command.add(System.getenv("ProgramFiles(x86)") + "\\mydir\\custom.exe";

String line;
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}

它的工作方式就像是该死的。 :)

最佳答案

你不需要线路

command.add("cmd");
command.add("/c");

这只需要批处理文件。我宁愿指定可执行文件的完整路径。

也许输出在 stderr 上?尝试用 p.getErrorStream() 替换 p.getInputStream()

关于java - ProcessBuilder 执行自定义可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com