我找了很长一段时间,但我找不到解决方案。我试图在.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 ...),执行程序的另一部分。
关于如何做的任何想法?
答案 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终端中一样输入行。