我想使用java编写一个在linux下使用的工具,这样我就可以像调用"ls“一样调用它。我该怎么办?我计划:
非常感谢
发布于 2014-07-25 18:18:45
您可以创建指向jar的bash文件/usr/bin/custom_program:
#!/usr/bin/bash
java -jar /path/to/your/java.jar # add any custom command line switches here不要忘记用sudo chmod u+x /usr/bin/custom_program将其标记为可执行文件。
您的输出将在程序中以System.out.println()调用的形式提供--不需要从main返回String。
然后,您可以在上面的bash脚本的帮助下用custom_program调用您的java程序。
发布于 2014-07-25 18:30:03
除了shell脚本之外,还可以使用其他技巧。
我更喜欢shell脚本,它可能更具有可移植性(某些Linux系统可能没有加载支持binfmt_misc所需的内核模块,或者没有可用的内核模块)
正如内核的文档/java.txt解释的那样:
2)您必须将BINFMT_MISC编译为一个模块,或者编译到内核(CONFIG_BINFMT_MISC)中,并正确地设置它。如果您选择将其编译为一个模块,则必须手动使用kmod /insmod插入它,因为binfmt_misc很难支持kmod。阅读此目录中的“binfmt_misc.txt”文件,了解有关配置过程的更多信息。 3)将以下配置项添加到binfmt_misc (您现在应该已经阅读了binfmt_misc.txt ):支持binfmt_misc.txt应用程序:
':Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper:'支持可执行的Jar文件:
':ExecutableJAR:E::jar::/usr/local/bin/jarwrapper:'支持Java小程序:
':Applet:E::html::/usr/bin/appletviewer:'或者,如果您希望更有选择性,请执行以下操作:
':Applet:M::<!--applet::/usr/bin/appletviewer:'当然你必须修正路径名。本文档中给出的路径/文件名与Debian2.1系统匹配。(即安装在/usr中的jdk、/usr/local中该文档的自定义包装器)
使用gcj
另一种可能性(我不推荐)是使用gcj (GCC内部的旧Java编译器)。
gcj使您能够将Java程序编译成本地Linux二进制可执行文件。但我不推荐这样做是因为:
gcj上工作。gcj;我只遇到过一个偶尔使用它的开发人员。gcj已经过时了gcj生成代码的性能不太好(因为它使用的Boehm垃圾收集器比其他Java实现中的GC要慢得多)。然而,在低分配率的Java代码上,它可能运行得相当快(因为GCC的强大优化是以GCC语言中性的中间端完成的)。gcj支持的Java语言是一些相当老的Java标准的子集。https://stackoverflow.com/questions/24962077
复制相似问题