为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只萌萌小番薯 2021-07-20 17:01:25
所以我有一个 JAR 程序,它运行并读取命令行 Linux 应用程序的输出。此应用程序位于临时文件夹中,这是我的 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 中运行它。问题是,如果不是我上面描述的方式,我如何指向 temp 内的 CLI 应用程序?PS:Java 应用程序以相同的设置在 Windows 上运行,使用 pb.command("temp/myapp", "arg1") 和 Win 版本,myapp因此这是 Linux 特定的问题。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我认为它没有在各自的路径上获得过程。尝试给出进程的绝对路径,然后执行。希望它会起作用。


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信