jshellでJavaスクリプトを実行するにはどうすればいいですか?質問する

jshellでJavaスクリプトを実行するにはどうすればいいですか?質問する

Java 9 がリリースされ、ようやく Java REPL が使えるようになったので、jshellスクリプトにシェバンを追加してjshell解釈する方法があることを期待していました。

作成してみましたtest.jsh:

#!/usr/bin/env jshell -s
System.out.println("Hello World")
/exit

しかし、次のようになります:

⚡ ./test.jsh
|  Error:
|  illegal character: '#'
|  #!/usr/bin/env jshell -s
|  ^
|  Error:
|  illegal start of expression
|  #!/usr/bin/env jshell -s
|    ^
Hello World

OpenJDKではこれに対する機能強化の要望があることが判明した。参考:

他にこれを行う方法はありますか?

ベストアンサー1

使用

//usr/bin/env jshell --show-version --execution local "$0" "$@"; exit $?

の最初の行としてtest.jshtest.jshスクリプトは次のようになります。

//usr/bin/env jshell --show-version "$0" "$@"; exit $?
System.out.println("Hello World")
/exit

コマンドライン オプションは--show-version、もちろんオプションですが、ツールが実行中であるというフィードバックを即座に提供します。

余分なコマンドライン オプションは、別の VM の生成を--execution local防ぎますjshell。これにより起動時間が短縮され、スクリプト コードによって例外がスローされた場合、ローカル VM は終了します。

その他のオプションについては、jshell --helpおよびの出力を参照してください。jshell --help-extra

アップデート

こちらもご覧くださいhttps://github.com/jbangdev/jbang Javaスクリプトを楽しむ.javaは、コマンドラインからファイルを実行するための便利なラッパーを提供します。

おすすめ記事