./whatever.jar
の代わりにできるようにしたいだけですjava -jar whatever.jar
。
私は方法を見つけました:
#!/bin/bash
java -jar $0 $*
exit
# jar goes here...
しかし、うまくいきません。Javaは、それが無効/破損したjarファイルであると不平を言うだけです。
パイプも試しました:
#!/bin/bash
tail -n +4 $0 | java -jar
exit
# jar goes here...
しかし、これは機能しません。
これを行う 1 つの方法は、ファイルを 2 つの別々の部分 (スクリプト部分と 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
別の方法で読む必要があります。私は本当にそれをパイプできたらいいのにと思います。それは物事をとても簡単にするでしょう:)