介绍
Java 9中引入了JShell,这是一个REPL(读取-评估-输出循环)工具,它使Java开发人员可以更快地测试和探索Java代码。JShell简化了Java体验,即时反馈,无需编译和运行整个程序即可执行Java代码。在本文中,我们将讨论如何在Java 9中调试JShell。
使用Java 9 JShell
Java 9中的JShell完全集成在Java中,无需安装任何其他软件包,只需在命令行中输入`jshell`命令即可启动JShell:
% jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell>
我们可以使用`/help`命令获取更多JShell命令:
jshell> /help
| Type a Java language expression, statement, or declaration.
| Or type one of the following commands:
/list [all|start|moduleName|packageName|class|method|vars|types]
list names of the above scope.
/set mode [INLINE|OFFLINE]
set the execution mode for snippets.
/set feedback [VERBOSE|NORMAL|TERSE]
set the feedback mode.
/set editor " -e "
set the editor to use for external editor integration.
/edit
edit a source entry referenced by its name or id.
/redefine [-p]
re-define a source entry with the specified name, or
re-define the previous one. Use -p for a pattern.
/save [-all|-history|-start]
save snippets to a file.
/open [-restore]
open a file as a jshell input source. Use -restore to restore
file state, such as last open snippet.
/history [-all|-start]
history of what was entered.
/reset
reset jshell's state.
...
调试JShell
在JShell中调试代码时,我们可以使用`/set feedback VERBOSE`命令启用详细输出,这样我们可以更清楚地了解在JShell中发生了什么。例如,在JShell中创建一个方法:
jshell> int add(int a, int b) {
...> return a + b;
...> }
| created method add(int,int)
我们可以使用`/list`命令列出当前JShell作用域中的所有内容:
jshell> /list
add(int,int)
我们可以使用`/edit`命令编辑之前创建的方法:
jshell> /edit add
| ...edit the definition of add(int,int)
| int add(int a, int b) {
| return a * b; // made an error here
| }
修改了方法内容后,如果我们调用该方法会发现返回结果并不是预期结果:
jshell> add(2, 3)
$1 ==> 6
我们可以使用`/set feedback VERBOSE`命令启用详细输出来分析错误,结果显示参数与返回值:
jshell> /set feedback VERBOSE
jshell> add(2, 3)
| add(int,int) // method call details
| Expression value is: 6
| assigned to temporary variable $2 of type int
现在,我们知道了问题所在,并且可以对其进行更正:
jshell> /edit add
| ...edit the definition of add(int,int)
| int add(int a, int b) {
| return a + b;
| }
| modified method add(int,int)
再次调用`add`方法:
jshell> add(2, 3)
$4 ==> 5
现在我们得到了预期的结果,并且已经成功地调试了JShell中的代码。
结论
JShell使Java代码的快速测试和探索变得更加容易。在Java 9中,我们可以使用命令行中的`jshell`命令启动JShell。为了在JShell中调试代码,我们可以使用`/set feedback VERBOSE`命令启用详细输出,并使用`/list`和`/edit`命令来管理作用域中的内容。通过对代码的修改和重新运行,我们可以轻松调试JShell中的Java代码。