請按照下列步驟重現(xiàn):創(chuàng)建帶有某種錯誤(缺少導(dǎo)入,語法錯誤等)的“ .jsh”腳本打開一個 jshell/open 錯誤的腳本該/open命令將以靜默方式完成。該腳本中聲明的元素將不在當前名稱空間中。jshell如果加載了錯誤的腳本,是否有辦法強制吐出錯誤及其在腳本中的位置?將反饋級別設(shè)置為verbose不會有任何改變。
2 回答

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
該問題似乎與JShell的“前向引用”功能有關(guān):當方法或類型聲明引用仍未定義的變量或方法時,JShell僅檢查語法正確性,并延遲方法響應(yīng)的編譯。類型。在交互模式下,它會顯示一條有用的消息,例如“方法x引用了未定義的方法y,只有在定義了方法y之前,該方法才能被調(diào)用”。但是,在運行啟動腳本時,該消息不會被打印,并且在許多情況下,該腳本不執(zhí)行任何操作,這非常令人困惑。我還沒有找到一種方法來啟用該消息的打印。
超級批評人士可能會說,此錯誤/功能使JShell對于“真實”腳本應(yīng)用程序毫無用處,我傾向于同意。
我建議在腳本執(zhí)行期間禁用“轉(zhuǎn)發(fā)引用”功能。為了使向前引用仍然可行,應(yīng)將整個腳本視為一個大片段。這也將消除每片段行數(shù)的問題,這對于從腳本解析的代碼完全沒有意義。

米脂
TA貢獻1836條經(jīng)驗 獲得超3個贊
jshell在啟動時會導(dǎo)入很多類,并且任何后續(xù)的代碼段(即使從文件中加載)都可以使用它們,因此,這里缺少一些丟失的導(dǎo)入。--no-startup可用于禁用此行為。
添加回答
舉報
0/150
提交
取消