我有一个程序,当您双击它时会运行。我想做的是:
双击 jar 文件
(只是一个例子,这不是我想做的)
我试过这个:
public class Main{
public static void main(String [] args){
Runtime.getRuntime().exec("/bin/bash sudo SOME_COMMAND_HERE");
}
}
(< code>SOME_COMMAND_HERE只是一个替换)
它没有启动终端。
(我有GUI部分,所以不需要为此编写代码)
那么我该怎么做呢?在过去的一两天里,我一直在寻找堆栈溢出的答案,以及激烈的谷歌搜索。另外,我需要它的原因是因为我想在运行sudo命令时向用户显示一些进度并输入密码。
有人能帮忙吗?提前感谢。
在您的示例中,由于您没有读取它的stdout和stderr流,该进程可能会停滞。从流程文档中:
由于一些原生平台仅为标准输入和输出流提供有限的缓冲区大小,因此未能及时写入进程的输入流或读取进程的输出流可能会导致进程阻塞,甚至死锁。
所以本质上,您只是在问如何从Java执行流程。与用户无关的是,您的程序将显示类似终端的UI。知道了这一点,我们可以重新表述您的问题并找到如下答案