应用程序中的Java命令行界面

3

我一直在试图找到一种方法来创建一个类似于ComputerCraft的CraftOS界面的Java命令行,使用像jBASH和luaj这样的已知库,但是似乎我遇到的任何东西都不再维护或者功能表现不佳。不幸的是,dan200将他的源代码锁定了,所以我甚至无法看到他是如何实现的...

这是否意味着我最终将不得不创建自己的BASH式外壳和/或自己的LUA式脚本方法,或者现在是否有一些正在维护的,至少有些可用的东西?


3
我可能没有理解问题的关键点,但是有什么阻止你直接从Java中运行Bash,并将其标准流传输到用户界面吗? - lynks
3个回答

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));

如果我理解问题正确的话,那不是 OP 要做的。他/她并不想让用户访问某个系统 shell;相反,他/她正在尝试创建一个类似 shell 的界面来控制程序的某些方面或执行操作。 - ruakh
如果你说得对,我会删除这个。 - lynks


1
[...] 像jBASH和luaj这样的已知库,但似乎我遇到的任何东西都不再维护或者功能不太好。

Luaj在Sourceforge上评价很高;它最后更新于一年前;自那以来缺乏更新可能只意味着它并没有真正需要更新。Lua是一种相当简单的语言。

即使您发现luaj对您来说不是100%完美的,我想修改它会比“必须创建自己的BASH-y shell和/或自己的LUA-y脚本方法”容易得多。(后者可能也不会给出100%完美的结果,除非您已经有实现脚本语言的经验。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接