在java程序中执行bash命令

时间:2016-12-17 10:56:36

标签: java linux bash process command

我找了很长一段时间,但我找不到解决方案。我试图在.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 ...),执行程序的另一部分。

关于如何做的任何想法?

2 个答案:

答案 0 :(得分:4)

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

HashSet<int>

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

现在我们将其翻译成Java:

java -jar M1_MIAGE_PDL_VIZ_GROUPE3.jar menu

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

例如,如果您使用的是GNOME

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

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

答案 1 :(得分:-1)

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

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