Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在前台打开vi编辑器_Java_Linux_Editor_Vi - Fatal编程技术网

Java在前台打开vi编辑器

Java在前台打开vi编辑器,java,linux,editor,vi,Java,Linux,Editor,Vi,我试图在linux环境中使用Java代码打开一个vi编辑器(Java代码通过shell脚本执行)。编辑器应该在前台打开并成为活动终端,而java应该在后台运行 我尝试使用以下两个命令:- String[]command={“xterm”、“vi”和“/home/user/test.txt”}; 进程pr=Runtime.getRuntime().exec(命令) 进程p=newProcessBuilder(“vi”,“/home/user/test35.txt”).start() 在上面的一段代

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

我尝试使用以下两个命令:-

  • String[]command={“xterm”、“vi”和“/home/user/test.txt”}; 进程pr=Runtime.getRuntime().exec(命令)

  • 进程p=newProcessBuilder(“vi”,“/home/user/test35.txt”).start()

  • 在上面的一段代码中,如果检查ps-ef | grep vi,我可以看到进程,但它是在后台运行的。我想在前台作为一个活动终端运行它,作为用户在编辑器中键入文本。而java将在后台运行。 任何建议或片段


    我已经提到了这一点,但仍然是徒劳的。

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

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

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

    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 robot插入)


    我引用了&

    感谢您的建议,尝试更改了1)String[]命令={“xterm”、“-e”、“vi”、“/home/hscpe/test.txt”};进程pr=Runtime.getRuntime().exec(命令);2) Process p=new ProcessBuilder(“xterm”、“-e”、“vi”、“/home/hscpe/test35.txt”).start(),但徒劳无功,仍然没有成功。此外,还未显示任何流程我是否需要在系统级别更改任何内容?或者我遗漏了什么?