You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决无法访问com.sun.rowset.CachedRowSetImpl类的问题?

解决Spring JDBC访问com.sun.rowset.CachedRowSetImpl的模块权限错误

这个错误是Java 9+模块系统的限制导致的:org.springframework.jdbc.core.SqlRowSetResultSetExtractor 处于未命名模块(你的项目依赖大概率还是基于传统classpath而非JPMS的modulepath),而com.sun.rowset.CachedRowSetImpl 所属的java.sql.rowset模块默认没有将com.sun.rowset包导出给未命名模块,因此触发了访问权限拦截。

下面是几种可行的解决方法:

  • 升级Spring Framework版本
    较新的Spring版本(比如5.3.x及以上)已经修复了这个JPMS兼容问题,直接把项目中的Spring相关依赖升级到对应版本,就能彻底解决这个问题,这也是最推荐的方案。

  • 添加JVM启动参数
    如果暂时无法升级Spring,可以在启动项目时添加JVM参数,强制开放模块访问权限:

    --add-exports java.sql.rowset/com.sun.rowset=ALL-UNNAMED
    

    比如在IDEA的运行配置里,把这个参数加到VM options中;如果用Maven运行,可在exec-maven-plugin的配置里指定启动参数。

  • 适配JPMS模块配置(仅模块化项目适用)
    要是你的项目已经迁移到Java模块系统(有module-info.java),可以在该文件中添加以下配置:

    requires java.sql.rowset;
    // 替换成你的项目中使用Spring JDBC的包路径
    opens com.yourproject.dao to org.springframework.jdbc;
    

内容的提问来源于stack exchange,提问作者Angelo Orale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:05