升级commons-compress至1.26.1后出现包不可见错误的原因咨询
问题解答
核心原因:Commons Compress 从1.25.0版本开始正式启用Java模块系统(JPMS)
你之前用的1.19这类低于1.25.0的版本,属于非模块化JAR包,在Java模块系统环境下会被当作「自动模块」处理。自动模块的特点是会自动导出所有内部包,而且其他模块不需要写
requires声明就能直接访问它的内容——这就是旧版本不用修改module-info.java的原因。从1.25.0版本开始,Commons Compress官方给它加了
module-info.java,变成了显式模块。显式模块严格遵守JPMS的规则:只有在你的模块的module-info.java里通过requires org.apache.commons.compress;声明依赖,才能合法访问它导出的org.apache.commons.compress.compressors这类包。你升级到1.26.1后,它已经是显式模块了,所以必须加这条声明才能正常编译。
补充说明
翻Commons Compress的版本更新记录就能看到,1.25.0的发布内容里明确提到了添加JPMS模块支持,模块名称就是org.apache.commons.compress。从这个版本起,它不再是自动模块,必须通过显式声明依赖才能使用。
内容的提问来源于stack exchange,提问作者Francis Salvin
相关产品推荐
相关产品推荐

