求助:使用Spring CLI运行简单Groovy程序时出现类加载错误
解决Spring CLI运行Groovy程序时的ClassNotFoundException问题
从你贴出的错误栈能看出,核心问题是**java.lang.ClassNotFoundException: java.sql.SQLException**,这个报错大多是Java版本和Spring CLI版本不兼容导致的——尤其是当你用了Java 9及以上版本,但Spring CLI版本过旧(比如1.x系列)时,Java 9开始的模块化系统会默认不加载部分可选模块,而老版本Spring CLI完全没适配这种变化。
下面是具体的解决步骤:
1. 先确认版本兼容性
- 检查Java版本:运行命令
java -version,看当前是Java 8、11还是更高版本。 - 检查Spring CLI版本:运行命令
spring --version。- 如果你的Java是9+版本,但Spring CLI是1.x,那必然出问题——Spring Boot 1.x根本不支持Java 9及以上版本。
- Spring Boot 2.x系列支持Java 8到17,3.x系列则要求Java 17及以上。
2. 调整版本匹配环境
方案A:升级Spring CLI到兼容版本
如果你用的是Java 11或17,建议直接升级Spring CLI到2.x或3.x版本:
- 要是用SDKMAN管理开发工具,可以直接运行:
sdk install springboot <目标版本号> # 比如2.7.17或3.2.0 - 手动安装的话,去Spring官方下载对应版本的CLI包,替换现有安装即可。
方案B:降级Java到8
如果暂时不想升级Spring CLI,可以把Java版本降级到8(Spring Boot 1.x的兼容版本),记得把环境变量里的JAVA_HOME指向Java 8的安装目录。
3. 临时应急方案(不推荐长期用)
如果暂时没法调整版本,可以尝试在运行时手动添加模块依赖参数:
spring run --jvm-options "--add-modules java.sql" Hello.groovy
这个命令会强制JVM加载java.sql模块,临时解决找不到SQLException的问题,但这只是权宜之计,版本匹配才是根本解决办法。
验证修复
调整完版本后,重新运行你的Groovy程序:
spring run Hello.groovy
如果一切正常,访问http://localhost:8080就能看到"Hello World"了。
内容的提问来源于stack exchange,提问作者Aviral
相关产品推荐
相关产品推荐

