【问题标题】:In-application Java command line应用程序内 Java 命令行
【发布时间】:2012-09-26 18:25:05
【问题描述】:

我一直在试图弄清楚如何在 Java 中使用 jBASH 和 luaj 等已知库来创建一种类似于 ComputerCraft's CraftOS 接口的命令行,但似乎我遇到的任何东西都不是不再维护或无法正常运行。不幸的是,dan200 一直在锁定他的来源,所以我什至看不到他是如何做到的......

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

【问题讨论】:

  • 我可能没抓住重点,但是有什么能阻止您从 java 运行 bash 并将其标准流通过管道传输到您的 ui 吗?

标签: java bash shell command-line lua


【解决方案1】:
【解决方案2】:

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

Luaj 在 Sourceforge 上获得高度评价;上次更新是一年前;从那以后缺乏更新可能只是意味着它实际上并没有需要更新。 Lua 是一种非常简单的语言。

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

【讨论】:

    【解决方案3】:

    只是用一些代码跟进我的评论;

    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 想要做的。 (S)他并没有试图让用户访问某些系统外壳;相反,他正在尝试创建一个类似于 shell 的界面来控制程序的各个方面或在程序中执行操作。
    • 你可能是对的,如果是这样,我会删除它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2012-04-12
    相关资源
    最近更新 更多