我正在部署一个用java编写的接受命令行参数的命令行工具。我将其打包为jar文件,因为使用单个文件很方便。
问题是要运行它,必须首先调用 java -jar (filename) (args)
这很烦人。
我目前的方法是使用一个简单的bash脚本来启动它,但这并不理想。
无论如何(在linux、ubuntu服务器中)是否有一个jar文件可以自己调用javavm?我已经找了一个shebang,但是找不到(这当然是有意义的,因为它是编译代码)。
这就是我想做的: myprogram.jar arg1 -arg2
而不是这样: java -jar myprogram.jar arg1 -arg2
谢谢,
布莱恩
3条答案
按热度按时间csbfibhn1#
在基于debian的发行版上,可以安装jarwrapper
我认为,通过使用相同的包名安装,在其他发行版上也可以做同样的事情。
zkure5ic2#
.zip文件格式(它是.jar格式的基础)在文件前面有额外数据的情况下似乎是健壮的。因此如果你使用
cat
命令将shebang放在jar文件的zip数据之前,并使该文件可执行,然后您可以像调用任何普通shell脚本一样调用jar文件。例如:(注意
unzip -l
命令只是为了说明这一点。它不会改变.jar的任何内容,在实际执行此过程时可以省略。)eqoofvh93#
请参阅linux内核文档中的documentation/java.txt,它告诉您如何使用
binfmt_misc
自动运行jar文件的内核模块。但是,这是您在计算机上更改的一个配置选项,而不是您对jar文件所做的更改,因此它不会在系统之间跟随jar文件。