我正在尝试在linux env中使用Java代码打开一个vi编辑器(java代码通过shell脚本执行)。编辑器应该在前台打开&成为活动终端,而java应该在后台运行。
我尝试使用以下两个命令: -
String [] command = {“xterm”,“vi”,“/ home / user / test.txt”}; Process pr = Runtime.getRuntime()。exec(command);
进程p = new ProcessBuilder(“vi”,“/ home / user / test35.txt”)。start();
在上面的代码之一中,如果检查ps -ef | grep vi,我能够完成这个过程,但它在后台运行。我想在前台运行它作为活动终端作为用户,他将文本输入到编辑器中。而java将在后台运行。 任何建议或片段。
我已经提到了Open VIM with Java application,但仍然徒劳无功。
答案 0 :(得分:0)
如果要在该终端中创建新的xterm 和执行命令,则需要使用-e
传递命令。试试这个:
ProcessBuilder pb = new ProcessBuilder("xterm", "-e", "vi", "/home/user/test.txt");
答案 1 :(得分:0)
我做的调试步骤是我尝试通过命令&打开一个终端。在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,即export DISPLAY =:0。现在将尝试使编辑器可编辑(通过按I来刺激,即由java机器人插入)。