一、概述
近日为了满足客户需求将项目的jdk版本由原先的1.8升级至17,整个过程比较顺利,但是在maven 打包时出现了报错。报错信息为:(程序包 sun.security.util 已在模块 java.base 中声明, 但该模块未将它导出到未命名模块)
二、问题分析
引起该问的原因是因为从jdk9 开始使用module 模块化引用的结构,包时存在的,只是我们在打包时没有将该模块引入并声明。
关于 module 模块化的文章,可以看这篇博文:https://zhuanlan.zhihu.com/p/640217638
三、解决方案
在打包时 加上打包参数
<arg>--add-exports</arg>
<arg>java.base/sun.security.util=ALL-UNNAMED</arg>
如下图:
至此 问题得到解决。针对不同的包 java.base/ *** 可以加上 不用的 报名。都属于同类问题,都可以得到解决。