升级JDK17问题记录

1. 放开标准库的模块访问限制

Jdk9模块后, 有些类访问, 需要通过如下配置打开访问权限

--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED 
--add-opens=java.base/java.lang=ALL-UNNAMED 
--add-opens=java.base/java.util=ALL-UNNAMED 
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED 
--add-opens=java.base/java.math=ALL-UNNAMED 
--add-opens=java.base/java.nio=ALL-UNNAMED

2. AppClassLoader父类不在是URLClassLoader

升级JDK17问题记录_第1张图片

3. JDK17 String字符串内部字段变化

JDK8和JDK17两个版本的String类内部字段数量和类型有不兼容的变化,Dubbo中使用的protostuff需要对这里做特殊适配
升级JDK17问题记录_第2张图片

4. 需要升级Springboot,

因为工程中原先使用的SpringBoot2.1版本无法解析JDK17的字节码, 启动会抛出异常, 项目中是升级后使用的是SpringBoot 2.7.11版本
SpringBoot高版本中禁止了循环依赖, 可以添加如下配置项打开, 示例中是放在Springboot的application.properties配置文件中

spring.main.allow-circular-references=true

5. 高版本SpringCloud关闭了自建ApplicationContext

SpringCloud关闭了自建Spring ApplicationContext, 可能改变一些基于SpringBoot扩展点实现的功能执行的优先级, 特别是自己业务上实现的扩展点,
实际上SpringCloud关闭自建ApplicationContext是合理的, 不然太混乱了, 实现扩展点时需要考虑很多问题.

spring.cloud.bootstrap.enabled=true  #开启SpringCloud自建ApplicationContext

6. Mybatis 版本需要升级到3.5.x以上, 3.4.x无法运行

升级JDK17问题记录_第3张图片
升级JDK17问题记录_第4张图片

7. zookeeper客户端需要升级到3.5.x以上, 3.4.x版本无法运行

在这里插入图片描述
升级JDK17问题记录_第5张图片
zookeeper-3.5.3-beta.jar 解决该问题
升级JDK17问题记录_第6张图片

你可能感兴趣的:(Java/JavaEE,java)