如何用jshell执行java脚本?

鉴于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是可选的,但会立即反馈工具正在运行

额外的命令行选项–execution local阻止jshell生成另一个VM.这会加快启动时间,如果脚本代码抛出异常,则本地VM将退出.

有关更多选项,请参阅jshell –help和jshell –help-extra的输出.

上一篇:JShell教程


下一篇:java-JShell-如何在不替换此类的情况下向现有类添加方法?