2013-02-27 56 views
1

如果我正在编写HelloWorld,是否有办法通过输入HelloWorld从任何目录运行程序?一旦你设置了Ant,就可以以同样的方式进行排序,你可以从任何目录运行Ant?您可以在Linux中使用名称而不使用“java”命令来运行Java程序吗?

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

回答

8

您可以随时创建一个shell脚本,将其命名为HelloWorld并使其与您的JAR运行java

然后,您需要chmod该脚本使其可执行,并将其放置在您的$PATH的某处。

脚本想是这样的:根据您的具体要求

#!/bin/bash 
cd /path/to/helloworld 
java -jar HelloWorld.jar "[email protected]" 

#!/bin/bash 
java -jar /path/to/helloworld/HelloWorld.jar "[email protected]" 

+0

注意,这个答案适用于Linux和唯一的其他Posix的操作系统。 Windows将要求您创建一个批处理文件。 – RudolphEst 2013-02-27 14:25:46

+0

使shell脚本检查它所在的目录并将其用作jar文件的路径可能更好。这样shell脚本和.jar文件就可以被复制到任何目录中。 – 2013-02-27 14:26:20

+1

@RudolphEst:没错,但问题是关于Linux的问题。 – NPE 2013-02-27 14:26:22

2

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

0

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

那么任何可执行文件.jar将被java(或jexec)解释

我不知道它是值得的。我发现用一些shell脚本封装你的Java程序要容易得多(而且更便于携带,因为很少有Linux系统实际使用binfmt_misc,而你的客户可能需要一些系统管理员技能来启用它)。