2

如果我正在编写 HelloWorld,是否可以通过键入 HelloWorld 从任何目录运行程序?设置好 Ant 之后的方式是一样的,您可以从任何目录运行 Ant 吗?

只是为了一些细节,我们正在为客户创建一个基于 CLI 的工具包,只是好奇我们是否可以编译、安装它,并让他们使用工具包名称运行它。

4

3 回答 3

9

您始终可以创建一个 shell 脚本,调用它HelloWorld并使其java与您的 JAR 一起运行。

然后,您需要chmod脚本使其可执行,并将其放置在$PATH.

该脚本将类似于:

#!/bin/bash
cd /path/to/helloworld
java -jar HelloWorld.jar "$@"

或者

#!/bin/bash
java -jar /path/to/helloworld/HelloWorld.jar "$@"

取决于您的具体要求。

于 2013-02-27T14:15:27.350 回答
2

您的问题的常见解决方案是创建一个单独的启动器应用程序,它是运行您的 Java 程序的非 Java 应用程序。Launcher 可以用一些可编译的语言(例如 C/C++)编写并编译成本机可执行文件。它也可以用一些解释性语言编写,例如 Unix shell、perl、python 等,并通过#!/path/to/interpreter在启动器文件的开头添加行并在其上设置可执行标志来使其可执行。还有一些实用程序可以为您的程序生成启动器,例如launch4jjsmooth

于 2013-02-27T14:20:08.423 回答
0

在 Linux(特别是)上,您可以使用/proc文件系统(参见proc(5)手册页)及其binfmt_misc(实际上是/proc/sys/fs/binfmt_misc/register伪文件和 下的其他伪文件/proc/sys/fs/binfmt_misc/)注册java.class.jar文件的处理程序。阅读内核源代码中的Documentation/binfmt_misc.txt文件以获取详细信息。

然后任何可执行.jar文件将由java(或jexec)解释

我不确定这是否值得。我发现将您的 Java 程序包装在一些 shell 脚本中要容易得多(并且更便携,因为实际上很少有 Linux 系统使用binfmt_misc.,而且您的客户可能需要一些系统管理员技能才能启用它)。

于 2013-02-27T19:51:39.073 回答