JDK8 升级至 JDK17 打包问题分析

一、概述

近日为了满足客户需求将项目的jdk版本由原先的1.8升级至17,整个过程比较顺利,但是在maven 打包时出现了报错。报错信息为:(程序包 sun.security.util 已在模块 java.base 中声明, 但该模块未将它导出到未命名模块)
JDK8 升级至 JDK17 打包问题分析_第1张图片

二、问题分析

引起该问的原因是因为从jdk9 开始使用module 模块化引用的结构,包时存在的,只是我们在打包时没有将该模块引入并声明。
关于 module 模块化的文章,可以看这篇博文:https://zhuanlan.zhihu.com/p/640217638

三、解决方案

在打包时 加上打包参数

<arg>--add-exports</arg>
<arg>java.base/sun.security.util=ALL-UNNAMED</arg>

如下图:
JDK8 升级至 JDK17 打包问题分析_第2张图片
至此 问题得到解决。针对不同的包 java.base/ *** 可以加上 不用的 报名。都属于同类问题,都可以得到解决。

你可能感兴趣的:(实际项目问题汇总,日常问题解决,java,maven,jdk)