我只想能够做到./whatever.jar
而不是java -jar whatever.jar
.
我找到了一种方法:
#!/bin/bash
java -jar $0 $*
exit
# jar goes here...
但它不起作用。Java 只是抱怨它是一个无效/损坏的 jarfile。
我也试过管道:
#!/bin/bash
tail -n +4 $0 | java -jar
exit
# jar goes here...
但这不起作用。
一种方法是以某种方式将文件拆分为两个单独的部分(脚本部分和 jar 部分),然后执行 jar,但这将是多余的。您不妨制作一个执行 jar 并执行该脚本的脚本。
所以我需要弄清楚如何以某种方式tail
伪造文件。
我以为我可以使用/dev/stdout
:
#!/bin/bash
java -jar /dev/stdout
tail -n +5 $0
exit
# jar goes here...
那也行不通。它只是打印 jar 的内容,java 抱怨它是无效的。(我后来发现没有什么可读的/dev/stdout
)
所以我需要从stdout
其他方式阅读。我真的希望我能管它。它会让事情变得容易得多:)