jshell - 无法找到printf

R K*_*R K 4 java-9 jshell

为什么我的jshell实例(JDK Version 9-ea)无法识别printf()语句?以下是我观察到的错误,

jshell> printf("Print number one - %d",1)
|  Error:
|  cannot find symbol
|    symbol:   method printf(java.lang.String,int)
|  printf("Print number one - %d",1)
|  ^----^
Run Code Online (Sandbox Code Playgroud)

我可以访问printf,只要我以常规方式指定它.

jshell> System.out.printf("Print number one - %d",1)
Print number one - 1$1 ==> java.io.PrintStream@1efbd816
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

Dav*_*rad 7

早期版本的JShell有一个printf预定义的方法,但它已从早期访问版本中删除.您当然可以定义自己的printf方法:

jshell> void printf(String format, Object... args) { System.out.printf(format, args); }
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过启动JShell来获取早期版本中的打印方法:

jshell --start DEFAULT --start PRINTING
Run Code Online (Sandbox Code Playgroud)

(如果您只使用--start PRINTING,则不会获得默认导入.)

有关更多信息,请参阅Java错误数据库中的错误JDK-8172102和实现它的变更集b2e915d476be.

  • 优秀!thx让我们知道这件事 (2认同)