groovysh 5.0.1中批量粘贴导入语句未生效的问题排查
为什么在Groovy Shell(5.0.1)中批量粘贴多条import语句后不生效?
操作示例
groovy> import java.util.Locale > import org.apache.poi.ss.usermodel.Sheet > import org.apache.poi.ss.usermodel.Workbook > import org.apache.poi.ss.usermodel.WorkbookFactory groovy> /imports groovy> import java.util.Locale; > import org.apache.poi.ss.usermodel.Sheet; > import org.apache.poi.ss.usermodel.Workbook; > import org.apache.poi.ss.usermodel.WorkbookFactory; groovy> /imports groovy> import org.apache.poi.ss.usermodel.CellType groovy> /imports import org.apache.poi.ss.usermodel.CellType groovy>
原因分析
Groovy Shell(groovysh)的多行输入模式(显示>提示符时),会将所有输入的多行内容视为单个脚本代码块执行。代码块内的import语句仅在该块的局部作用域内有效,不会被注册到shell的全局导入上下文,因此执行/imports命令无法检测到这些导入。
只有当import语句作为独立顶级语句执行时(比如单独输入一条后按回车),才会被添加到全局导入列表,这也是示例中单独输入import org.apache.poi.ss.usermodel.CellType后能被/imports识别的原因。
解决方法
有两种方式可以批量添加全局import:
- 方式一:将所有import放在同一行,用分号分隔后执行
groovy> import java.util.Locale; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory groovy> /imports import java.util.Locale import org.apache.poi.ss.usermodel.Sheet import org.apache.poi.ss.usermodel.Workbook import org.apache.poi.ss.usermodel.WorkbookFactory
- 方式二:逐条输入每条import语句,每条单独执行
groovy> import java.util.Locale groovy> import org.apache.poi.ss.usermodel.Sheet groovy> import org.apache.poi.ss.usermodel.Workbook groovy> import org.apache.poi.ss.usermodel.WorkbookFactory groovy> /imports import java.util.Locale import org.apache.poi.ss.usermodel.Sheet import org.apache.poi.ss.usermodel.Workbook import org.apache.poi.ss.usermodel.WorkbookFactory
内容的提问来源于stack exchange,提问作者GuyMatz
相关产品推荐
相关产品推荐

