【发布时间】:2019-07-12 07:19:42
【问题描述】:
我尝试从 java 进程中的特定位置调用带有文件的 vim 编辑器:
Runtime.getRuntime().exec("gvim /etc/fstab '+normal GW'");
不幸的是,这不起作用。它从 gvim 发出一条奇怪的错误消息,这无助于发现问题(“/etc/fstab”“/etc/fstab”[只读] 12L,664C)。
直接在终端输入同样的命令效果很好。
我尝试修改命令:
Runtime.getRuntime().exec("gvim /etc/fstab +normal\ GW");
直接在终端中输入时也可以使用。但这给出了完全相同的行为。
的作用是将命令及其参数拆分成一个字符串[]:
Runtime.getRuntime().exec(new String[]{"gvim", "/etc/fstab" ,"+normal GW"});
这种行为的原因是什么? 如何在 Java 中将上述命令作为单个字符串调用?
【问题讨论】:
-
使用 ProcessBuilder。
ProcessBuilder pb = new ProcessBuilder("gvim","/etc/fstab","'+normal\ GW'"); pb.start(); -
@PrasanthGanesan 也不是单个字符串。
-
然后this 可以工作
-
@PrasanthGanesan 不,这显示了完全相同的行为。
标签: java