【问题标题】:Java open a vi editor in foregroundJava在前台打开vi编辑器
【发布时间】:2017-06-02 04:11:35
【问题描述】:

我正在尝试在 linux 环境中使用 Java 代码打开 vi 编辑器(Java 代码通过 shell 脚本执行)。编辑器应该在前台打开并成为活动终端,而 java 应该在后台运行。

我尝试使用这两个命令:-

  1. 字符串 []command = {"xterm", "vi", "/home/user/test.txt"}; 进程pr = Runtime.getRuntime().exec(command);

  2. 进程 p = new ProcessBuilder("vi", "/home/user/test35.txt").start();

在上述代码之一中,如果检查 ps -ef | grep vi,我可以处理这个过程,但它在后台运行。我想在前台作为活动终端运行它,因为他将文本输入到编辑器中。而java将在后台运行。 任何建议或sn-p。

我已经提到了这个Open VIM with Java application,但仍然是徒劳的。

【问题讨论】:

  • 我需要在系统级别进行任何更改吗?或者我错过了什么?

标签: java linux editor vi


【解决方案1】:

如果您想创建一个新的 xterm 在该终端中执行一个命令,您需要使用-e 传递该命令。试试这个:

ProcessBuilder pb = new ProcessBuilder("xterm", "-e", "vi", "/home/user/test.txt");

【讨论】:

  • 感谢您的建议,尝试更改两者 1) String []command = {"xterm","-e", "vi", "/home/hscpe/test.txt"};进程 pr = Runtime.getRuntime().exec(command); 2) 进程 p = new ProcessBuilder("xterm","-e", "vi", "/home/hscpe/test35.txt").start(); ,但徒劳无功,仍然没有成功。也没有显示过程
【解决方案2】:

我所做的调试步骤是尝试通过命令打开终端并在 Java 代码中使用相同的命令。观察到我需要设置 DISPLAY=:0 的问题。如果我通过 root 用户运行,则不需要其他用户导出 DISPLAY

String []command = {"/usr/bin/xterm","-e", "vi", "/home/hscpe/test.txt"};
 Process pr = Runtime.getRuntime().exec(command);

由于我通过 shell 脚本运行 java 代码,我将在 shell 脚本中添加导出,即 export DISPLAY=:0。现在将尝试使编辑器可编辑(将通过按 I 来刺激,即由 java 机器人插入)。

我推荐了here & here

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 2012-02-10
    • 2021-09-16
    • 2011-06-19
    • 2010-12-18
    • 2017-06-09
    • 2015-01-04
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多