猿问

如果用户尝试以某种错误来源获取脚本,则jshell会以静默方式完成

请按照下列步骤重现:

  1. 创建带有某种错误(缺少导入,语法错误等)的“ .jsh”脚本

  2. 打开一个 jshell

  3. /open 错误的脚本

  4. /open命令将以静默方式完成。

  5. 该脚本中声明的元素将不在当前名称空间中。

jshell如果加载了错误的脚本,是否有办法强制吐出错误及其在脚本中的位置?将反馈级别设置为verbose不会有任何改变。


杨__羊羊
浏览 143回答 2
2回答

桃花长相依

该问题似乎与JShell的“前向引用”功能有关:当方法或类型声明引用仍未定义的变量或方法时,JShell仅检查语法正确性,并延迟方法响应的编译。类型。在交互模式下,它会显示一条有用的消息,例如“方法x引用了未定义的方法y,只有在定义了方法y之前,该方法才能被调用”。但是,在运行启动脚本时,该消息不会被打印,并且在许多情况下,该脚本不执行任何操作,这非常令人困惑。我还没有找到一种方法来启用该消息的打印。超级批评人士可能会说,此错误/功能使JShell对于“真实”脚本应用程序毫无用处,我倾向于同意。我建议在脚本执行期间禁用“转发引用”功能。为了使向前引用仍然可行,应将整个脚本视为一个大片段。这也将消除每片段行数的问题,这对于从脚本解析的代码完全没有意义。

米脂

jshell在启动时会导入很多类,并且任何后续的代码段(即使从文件中加载)都可以使用它们,因此,这里缺少一些丢失的导入。--no-startup可用于禁用此行为。
随时随地看视频慕课网APP

相关分类

Java
我要回答