是否可以通过 java-ProcessBuilder 执行终端图形应用程序

Is it possible to execute terminal-graphical-apps thru java-ProcessBuilder

是否可以使用 ProcessBuilder 或其他方式从 java 应用程序 运行 子进程,如 Far/MidnightCommander(或其他带有 ncurses/graphical-interface 的终端应用程序)?

ProcessBuilder 的标准示例可以很好地处理一些简单的东西,例如 ping

new ProcessBuilder().command("ping -n 4 google.com").start(); // :)

,但对 far

根本不起作用
new ProcessBuilder().command("far").start(); // :(

是的。

这些应用程序需要访问终端设备才能工作。如果您从终端启动 java 程序,您可以通过让新进程 继承 它来使用同一个终端:

new ProcessBuilder().inheritIO().command("top").start(); // :)

否则,您需要启动一个新的终端仿真器才能运行程序。

new ProcessBuilder().command("xterm", "top").start(); // :)