为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2021-04-11 16:18:20
请按照下列步骤重现:创建带有某种错误(缺少导入,语法错误等)的“ .jsh”脚本打开一个 jshell/open 错误的脚本该/open命令将以静默方式完成。该脚本中声明的元素将不在当前名称空间中。jshell如果加载了错误的脚本,是否有办法强制吐出错误及其在脚本中的位置?将反馈级别设置为verbose不会有任何改变。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

该问题似乎与JShell的“前向引用”功能有关:当方法或类型声明引用仍未定义的变量或方法时,JShell仅检查语法正确性,并延迟方法响应的编译。类型。在交互模式下,它会显示一条有用的消息,例如“方法x引用了未定义的方法y,只有在定义了方法y之前,该方法才能被调用”。但是,在运行启动脚本时,该消息不会被打印,并且在许多情况下,该脚本不执行任何操作,这非常令人困惑。我还没有找到一种方法来启用该消息的打印。

超级批评人士可能会说,此错误/功能使JShell对于“真实”脚本应用程序毫无用处,我倾向于同意。

我建议在脚本执行期间禁用“转发引用”功能。为了使向前引用仍然可行,应将整个脚本视为一个大片段。这也将消除每片段行数的问题,这对于从脚本解析的代码完全没有意义。


查看完整回答
反对 回复 2021-04-28
?
米脂

TA贡献1836条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信