如何创建可直接运行的jar包 2018-10-10 16:05:26 前段时间折腾presto,发现他的客户端jar包启动方式比较有意思,直接`chmod +x presto-cli.jar`,然后就可以直接执行`./presto-cli.jar`来运行了,不需要执行`java -jar presto-cli.jar`,感觉这种启动方式好新奇。 比较好奇操作系统是如何完成直接启动jar包的。 通过file命令检查下这个jar包的格式,咦,咋是个shell脚本呢: ``` ➜ Downloads file presto-cli-0.208-executable.jar presto-cli-0.208-executable.jar: POSIX shell script executable (binary data) ``` 普通的jar包,用file命令查看应该是`Java archive data (JAR)`才对。 既然是个shell脚本,那就看下里面写的啥呗,由于这个文件特别大,我用head查看了下文件头部内容: ![图片标题](/api/file/getImage?fileId=5bbdafddba8bc2481f000453) 我去,大悟,原来是个shell脚本和二进制文件的结合体。 ## 创建个包含jar包的shell脚本 先创建个shell脚本文件`run.sh` ``` #!/bin/sh exec java -jar "$0" "$@" ``` 假设手头上已经有个test.jar,可以通过`java -jar test.jar`执行。 接下来使用cat整合下这两个文件: ``` cat run.sh test.jar > run chmod +x run ``` 接下来就可以通过`./run`直接运行了,也可以通过`java -jar run`运行。 ^_^, 以后可以通过这种方式将启动方式作进一步简化了。 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:如何创建可直接运行的jar包 赏 Prev NodeMcu刷入固件无法启动的问题 Next Flutter国际化设置在iOS设备上不生效的问题