运行Groovy脚本无法解析org.apache.commons.lang.RandomStringUtils类求助
Groovy脚本找不到RandomStringUtils类问题修复方案
问题根因
- Groovy 2.1.9版本默认未内置Apache Commons Lang依赖,需要手动引入
- 你之前尝试的两个依赖坐标均非官方正式发布的commons-lang组件,无法从Maven中央仓库正常拉取
- 非法反射访问警告是JDK11和Groovy 2.1.9版本兼容性导致,不影响功能运行
修复方法
1. 替换正确的依赖引入
官方Apache Commons Lang 2.6(包含你需要的org.apache.commons.lang.RandomStringUtils类)的正确坐标为commons-lang:commons-lang:2.6,直接在脚本import语句前添加@Grab注解即可。
2. 修正脚本文件名对应关系
你编写的脚本名为myScript.groovy,执行时注意不要写错为sampleScript.groovy。
修改后的完整脚本如下:
@Grab('commons-lang:commons-lang:2.6') import org.apache.commons.lang.RandomStringUtils String charset = (('A'..'Z') + ('0'..'9')).join() Integer length = 9 String randomString1 = RandomStringUtils.random(length, charset.toCharArray()) String randomString2 = RandomStringUtils.random(length, charset.toCharArray()) String randomString3 = RandomStringUtils.random(length, charset.toCharArray()) // 可自行添加打印逻辑验证生成结果 println randomString1 println randomString2 println randomString3
3. 可选操作
- 若仍然出现依赖拉取失败,可删除本地Groovy Grape缓存后重试:
rm -rf ~/.groovy/grapes/commons-lang - 若需要消除非法反射警告,执行脚本时添加对应JVM参数即可:
groovy --add-opens java.base/java.lang=ALL-UNNAMED myScript.groovy
内容的提问来源于stack exchange,提问作者u123
相关产品推荐
相关产品推荐

