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

我一直在试图想出如何在Java中创建一种类似于ComputerCraft CraftOS接口的命令行,使用像jBASH和luaj这样的已知库,但似乎我找到的任何东西要么不再维护,要么功能不太好。不幸的是,dan200将他的源代码保密,所以我甚至看不到他是如何做到的...

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

点赞
用户980520
用户980520

只是为了跟进我的评论,附带了一些代码;

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));
2012-10-05 15:15:04
用户978917
用户978917

[…] 除了像 jBASH 和 luaj 这样著名的库之外,似乎我所遇到的任何东西都不再维护或者功能不太好。

在 Sourceforge 上,Luaj 得到了很高的评价;它最近一次更新是一年前;而自那时以来缺乏更新可能仅仅意味着它并不真正需要更新。Lua 是一种相当简单的语言。

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

2012-10-05 15:16:46
用户657703
用户657703

BeanShell是一个小型、免费、可嵌入的Java源代码解释器,具有对象脚本语言特性,用Java编写。BeanShell动态执行标准Java语法,并扩展了常见脚本便利功能,比如宽松类型、命令和方法闭包,就像Perl和JavaScript中的那些一样。

2012-10-05 22:00:23