请按照下列步骤重现:创建带有某种错误(缺少导入,语法错误等)的“ .jsh”脚本打开一个 jshell/open 错误的脚本该/open命令将以静默方式完成。该脚本中声明的元素将不在当前名称空间中。jshell如果加载了错误的脚本,是否有办法强制吐出错误及其在脚本中的位置?将反馈级别设置为verbose不会有任何改变。
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
该问题似乎与JShell的“前向引用”功能有关:当方法或类型声明引用仍未定义的变量或方法时,JShell仅检查语法正确性,并延迟方法响应的编译。类型。在交互模式下,它会显示一条有用的消息,例如“方法x引用了未定义的方法y,只有在定义了方法y之前,该方法才能被调用”。但是,在运行启动脚本时,该消息不会被打印,并且在许多情况下,该脚本不执行任何操作,这非常令人困惑。我还没有找到一种方法来启用该消息的打印。
超级批评人士可能会说,此错误/功能使JShell对于“真实”脚本应用程序毫无用处,我倾向于同意。
我建议在脚本执行期间禁用“转发引用”功能。为了使向前引用仍然可行,应将整个脚本视为一个大片段。这也将消除每片段行数的问题,这对于从脚本解析的代码完全没有意义。
米脂
TA贡献1836条经验 获得超3个赞
jshell在启动时会导入很多类,并且任何后续的代码段(即使从文件中加载)都可以使用它们,因此,这里缺少一些丢失的导入。--no-startup可用于禁用此行为。
添加回答
举报
0/150
提交
取消