2012-10-05 31 views
3

我一直在試圖弄清楚如何在Java中製作一種類似於ComputerCraft's的CraftOS接口,使用已知的庫(如jBASH和luaj),但似乎我遇到的任何問題或者不再被維護或者不能很好地運行。不幸的是,dan200保持他的源鎖和鑰匙,所以我什至不知道他是如何做到這一點......在應用程序中的Java命令行

這是否意味着我可能最終不得不創建我自己的BASH-Y殼和/或我自己的LUA-y腳本編寫方法,還是現在正在維護的東西至少有些可用?

+3

我可能已經錯過了點,但有什麼只從運行bash阻止你從Java和管道標準流到你的用戶界面? – lynks

回答

2

只是跟進我的評論與一些代碼;

Process p = Runtime.getRuntime().exec("/bin/bash"); 
InputStream stdout = p.getInputStream(); 
InputStream stderr = p.getErrorStream(); 
OutputStream stdin = p.getOutputStream(); 

而且你可能會換那些BufferedReaderBufferedWriter分別,這樣就可以將它們作爲字符流,讓你做的事情,如文本的讀寫線。例如;

BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout)); 
+0

如果我正確地理解了這個問題,那不是OP所要做的。 (S)他不想讓用戶訪問某些系統shell;相反,他正在嘗試創建一個類似shell的界面來控制程序的各個方面或採取行動。 – ruakh

+0

你可能是對的,如果是這樣,我會刪除它。 – lynks

1

[…]衆所周知庫,例如jBASH和luaj,但它似乎什麼我遇到或者不能維持了或不工作都非常清楚。

Luaj在Sourceforge上評分很高;它是一年前最後更新的;並且從那時起缺乏更新可能意味着它並沒有真正需要更新。 Lua是一個非常簡單的語言。

即使你發現luaj對你來說不是100%完美,我想可以修改它比「不得不創建我自己的BASH-y shell和/或我自己的LUA-y腳本方法」 。 (後者可能不會給予100%的完美結果,或者,除非你已經有實施經驗的腳本語言。)