gpt4 book ai didi

java - 使用 Java 在 Linux 上的文件夹内运行进程

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:00 27 4
gpt4 key购买 nike

所以我有一个运行并读取命令行 Linux 应用程序输出的 JAR 程序。此应用程序位于一个临时文件夹中,我的 JAR 位于该文件夹中。

这是读取输出的 Java 代码:

Process proc;
ProcessBuilder pb = new ProcessBuilder();
pb.command("temp/myapp", "arg1");
pb.redirectErrorStream(true);
try {
proc = pb.start();
} catch (IOException ex) {
System.out.println("ERROR: Couldn't start process");
}
scan = new Scanner(proc.getInputStream());
String line = "";
while (scan.hasNext())
line += scan.nextLine() + System.lineSeparator();
scan.close();

当然,稍后我会返回我读入的字符串。

现在,问题是Scanner 抛出NullPointerException,这意味着无法找到或无法运行该进程。当我从临时文件中取出可执行文件并使用

pb.command("./myapp", "arg1");

我的程序运行良好。

如果我打开 JAR 所在的终端,temp/myapp arg1 将准确返回它应该返回的内容。只有 Java 代码似乎无法在内部临时运行。

问题是,如果不是我上面描述的方式,我该如何指向 temp 中的 CLI 应用程序?

PS:Java 应用程序以相同的设置在 Windows 上运行,使用 pb.command("temp/myapp", "arg1") 和 myapp 的 Win 版本,所以这是一个 Linux-具体问题。

最佳答案

我认为它没有在各自的路径上进行处理。尝试给出进程的绝对路径,然后执行。希望它能奏效。

关于java - 使用 Java 在 Linux 上的文件夹内运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51862124/

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