2017-06-02 85 views
0

我想在linux環境下使用Java代碼打開vi編輯器(java代碼是通過shell腳本執行的)。編輯應該在前臺打開&成爲活動終端,而java應該在後臺運行。Java在前臺打開vi編輯器

我嘗試使用這兩個命令使用: -

  1. 字符串[]命令= { 「xterm的」, 「VI」, 「/home/user/test.txt」}; Process pr = Runtime.getRuntime()。exec(command);

  2. Process p = new ProcessBuilder(「vi」,「/home/user/test35.txt」)。start();

在上面的代碼之一,如果檢查ps -ef | grep vi,我能夠進程,但它在後臺運行。我想在前臺運行它作爲用戶的活動終端,他將文本輸入到編輯器中。而java將在後臺運行。 任何建議或摘錄。

我已經提到這Open VIM with Java application,但仍然徒勞。

+0

我需要在制度層面改變什麼?或任何我失蹤的東西? – Kiran

回答

0

如果要創建新的xterm 在該終端中執行命令,則需要將該命令與-e一起傳遞。試試這個:

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

謝謝你的建議,試着改變1)String []命令= {「xterm」,「 - e」,「vi」,「/home/hscpe/test.txt」}; Process pr = Runtime.getRuntime()。exec(command); 2)進程p = new ProcessBuilder(「xterm」,「 - e」,「vi」,「/home/hscpe/test35.txt」)。 ,但徒勞無益,仍然沒有成功。也沒有顯示過程 – Kiran

0

我做的調試步驟是我試圖打開通過命令&終端在Java代碼中使用相同的命令。問題觀察到我需要設置DISPLAY =:0。如果我通過根用戶運行時,其他用戶出口DISPLAY並不需要

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

由於我運行經由外殼腳本我將增加在外殼腳本即出口DISPLAY =出口java代碼:0。現在將嘗試使編輯器成爲可編輯的(將通過按I來刺激,即通過Java機器人插入)。

我提到here & here