【发布时间】:2012-06-18 17:14:56
【问题描述】:
我只想能够做到./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。我真的希望我能管它。这会让事情变得容易得多:)
【问题讨论】:
-
我不认为这是一件可行的事情,除了“制作一些其他运行
java -jar myjar.jar本身的脚本。 -
您是如何在第一个版本中创建脚本的?您是否包含有效的清单文件?请提供您使用的命令。
-
你可能不得不考虑像launch4j.sourceforge.net这样的工具。
标签: java linux bash jar executable-jar