鉴于 Java 9 即将到来,我们终于可以使用 jshell
获得 java REPL,我希望有一种方法可以将 shebang 添加到脚本并拥有 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 中有一个增强请求 https://bugs.openjdk.java.net/browse/JDK-8167440 .
还有其他方法吗?
最佳答案
使用
//usr/bin/env jshell --show-version --execution local "$0""$@";退出 $?
作为 test.jsh
的第一行。 test.jsh
脚本可能如下所示:
//usr/bin/env jshell --show-version "$0" "$@"; exit $?
System.out.println("Hello World")
/exit
命令行选项 --show-version
当然是可选的,但会立即提供工具正在运行的反馈。
extra 命令行选项 --execution local
可防止 jshell
生成另一个 VM。这加快了启动时间,如果您的脚本代码引发异常,本地 VM 将退出。
更多选项请引用 jshell --help
和 jshell --help-extra
的输出。
更新
还可以看看 https://github.com/jbangdev/jbang 享受 Java 脚本编写的乐趣,它为从命令行运行 .java
文件提供了一个简洁的包装器。
关于java - 如何使用 jshell 执行 java 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916618/