Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向Unix命令行应用程序添加命令调用_Java_Unix_Command Line_Command Prompt_Ledit - Fatal编程技术网

Java 向Unix命令行应用程序添加命令调用

Java 向Unix命令行应用程序添加命令调用,java,unix,command-line,command-prompt,ledit,Java,Unix,Command Line,Command Prompt,Ledit,我正在为Solaris开发一个用Java6编写的命令行应用程序。我希望能够像许多Unix工具(Shell、VIM命令模式提示符等)一样,使用向上和向下箭头滚动查看以前命令的历史记录 有没有标准的方法来实现这一点,或者我必须自己动手吗?是的,使用图书馆。我想你正在寻找类似的东西,但我从未使用过,因此无法证明它的质量 她显然可以处理自动完成和命令行历史记录,最近(今年2月)发布了最后一个版本,因此它绝不会消亡。ledit在linux上做这类事情很好。它可能很容易在solaris上编译 澄清:ledi

我正在为Solaris开发一个用Java6编写的命令行应用程序。我希望能够像许多Unix工具(Shell、VIM命令模式提示符等)一样,使用向上和向下箭头滚动查看以前命令的历史记录


有没有标准的方法来实现这一点,或者我必须自己动手吗?

是的,使用图书馆。

我想你正在寻找类似的东西,但我从未使用过,因此无法证明它的质量


她显然可以处理自动完成和命令行历史记录,最近(今年2月)发布了最后一个版本,因此它绝不会消亡。

ledit在linux上做这类事情很好。它可能很容易在solaris上编译

澄清:ledit将调用封装到其他命令行应用程序,甚至可以传递一个文件来持久存储您的历史记录


这里是主页:

有一个SourceForge项目,它向GNU readline提供基于JNI的绑定。我已经使用过它(没有在实际项目中使用),它肯定涵盖了所有功能。

警告:受GPL许可条款的约束:

Readline是免费软件,分布式 根据GNU通用条款 公共许可证,第2版。这意味着 如果您想在 您发布或分发的程序 对任何人来说,这个项目都必须是免费的 软件和GPL兼容 许可证如果你想得到关于 使您的许可证与GPL兼容, 接触licensing@gnu.org.

换句话说,使用Readline将GPL从库扩展到整个程序。(与LGPL相反,LGPL允许运行时链接到库,并且只需要开源来改进库本身。)

对于我们这些商业世界的人来说,即使我们没有开发商业应用程序,这也是一个阻碍展示的因素

无论如何,列出了几个备选方案,包括JLine,这听起来很有希望


顺便说一句:我在一家设计医疗产品的公司工作。我们的电脑软件零(0)美元。我们几乎所有的软件都是在我们设计的嵌入式系统上运行的(我们不会从软件的销售/升级中赚到钱,只有产品本身);有时,我们确实有可以在最终用户的PC上运行的软件诊断工具(我认为没有向客户发布的设计/制造/测试软件可能会使用GPL库,但我不确定),医疗产品有相当严格的控制;基本上,你必须向FDA证明它对用户是安全的,而不是最终用户可以决定“哦,我不喜欢这个软件,我会调整它或使用XYZ公司的售后更换品”——这会让设备制造商承担巨大的责任。

除非答案是“不好”,否则我不会投反对票,但我很惊讶,考虑到GPL因素,这是一个被接受的答案。@Jason:什么GPL因素?您不必用代码分发
readline
。您可以假设客户机在其系统中有它,或者提供有关如何安装它的说明。这与Audacity使用ffmpeg的方式类似。他们没有发布许可证,但他们会告诉你如何获取它,并在他们的软件中使用它。从他们的网页():“Readline是免费软件,根据GNU通用公共许可证第3版的条款发布。这意味着,如果您想在发布或分发给任何人的程序中使用Readline,该程序必须是自由软件,并且具有GPL兼容许可证。因此,它将GPL从一个库扩展到整个程序。与LGPL不同的是,LGPL允许运行时链接到库,并且只需要开源来改进库本身。您下载的任何软件都会有某种许可证,如果您选择使用该软件,最好遵守该许可证。事实上,GNU Readline功能强大,应用广泛。更令人惊讶的是,这是公认的答案,因为GNU Readline是一个C库。当我最初发布时,我显然没有注意到Java需求(不是我的反对票),但我猜这是不必要的贬义词“中毒”。