当前位置: 首页 > 面试题库 >

在Java程序中执行bash命令

彭坚壁
2023-03-14
问题内容

自寻找以来已经有一段时间了,但找不到解决方案。我试图在.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外壳不提供控制台/终端功能。为此,您需要使用“终端”应用程序。

例如,如果您使用的是GNOME

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

将(可能)做您想做的事情。



 类似资料:
  • 问题内容: 我有一个我需要使用程序执行的程序。有人可以指导我该怎么做吗? 我的命令是 问题答案: 您应该编写一个这样的Java程序,这是一个基于Nirman的技术博客的示例,其基本思想是执行如下调用PowerShell进程的命令: 为了执行Powershell脚本

  • 我有下面的课。它允许我通过java执行命令。 当我运行命令时,上一个命令的结果没有保存。例如: 给出输出: 为什么第二个“ls”命令不显示“bin”目录的内容?

  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • 问题内容: 我正在使用ProcessBuilder执行bash命令: 但我想做这样的事情: 如何将超级用户密码传递给bash? 不会解决这个问题,因为它是从Ubuntu 13.04开始删除的,我需要使用默认命令来执行此操作。 编辑 gksudo在最近的更新中回到了Ubuntu 13.04。 问题答案: 我想您可以使用它,但是我有点犹豫要发布它。所以我只想说: 使用此方法后果自负,不建议您使用,请勿

  • 问题内容: 我正在使用的程序使用ADB(Android调试桥)将文件发送到手机: 我希望程序等待ADB完成传输,但是ADB作为守护程序运行,因此永远无法完成。但是该程序仍在继续运行,并且某种程度上文件没有发送到我的手机(日志中没有例外)。当我从控制台运行命令时,它可以正常工作。 我究竟做错了什么?如何正确通过ADB发送文件? 注意:这将不起作用,因为ADB守护程序会将 所有输出 写入系统标准输出。

  • 试图执行这个,但什么也没发生。我用的是Ubuntu13.10。如何用java程序在ubuntu中做cd。我用过“-c”,但它不起作用。