在java程序中执行bash命令

我已经有一段时间了,但我找不到解决方案。 我正在尝试在.jar文件中的Linux上执行bash命令。 为此,我尝试了很多东西,包括:

Process p = new ProcessBuilder("java", "-jar", "M1_MIAGE_PDL_VIZ_GROUPE3.jar", "menu").start(); Runtime.getRuntime().exec("/bin/sh -c java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu"); Runtime.getRuntime().exec(new String[]{"/bin/sh -c", "java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu"}); 

所以,当我点击.jar文件时,我想程序打开一个bash,然后执行命令(java -jar …)来执行程序的另一部分。

关于如何做的任何想法?

要理解这一点,首先需要了解如何在shell提示符下运行该命令。

 $ sh -c "java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu" 

注意双引号的位置。 第一个参数是-c 。 第二个参数是引号内的东西; 即java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu

现在我们将其翻译成Java:

 Process p = new ProcessBuilder( "/bin/sh", "-c", "java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu").start(); 

话虽如此,上述内容实际上并没有实现。 当然,它不会打开一个新的控制台窗口来显示控制台输出等。 与Windows“CMD.exe”不同,UNIX / Linux shell不提供控制台/终端function。 为此,您需要使用“终端”应用程序。

例如,如果您使用的是GNOME

 Process p = new ProcessBuilder( "gnome-terminal", "-e", "java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu").start(); 

将(可能)做你想做的事。

我认为最简单的方法是创建一个shell脚本(.sh扩展名),然后您可以从Java程序中轻松运行它。 关于如何在Java中运行shell脚本的前一个问题,有一个很好的答案。

要创建shell脚本,您可以使用任何文本编辑器并创建扩展名为.sh的文件,并像在bash终端中一样输入行。