• 请不要在回答技术问题时复制粘贴 AI 生成的内容
overthemoon
V2EX  ›  程序员

JDK8 升级到 JDK17 怎么搞

  •  1
     
  •   overthemoon · Aug 12, 2022 · 5619 views
    This topic created in 1550 days ago, the information mentioned may be changed or developed.

    项目一直用 jdk8 ,一下子就得升级到 17 ,启动就报找不到 rt.jar 的错误
    “java: 程序包 sun.reflect.generics.reflectiveObjects 不存在”
    咋解决这个 jar 包问题??
    接着就是 springboot 版本问题
    还有其它坑需要注意的吗

    10 replies  •  2022-08-14 10:00:18 +08:00
    JerryX
    JerryX
    Aug 12, 2022
    2
    可以改 openjdk ,去清华的镜像站去下载,然后建一个 java 文件夹,所有版本的 jdk 都放进去,挑一个常用的加到环境变量,其余的就是 IDE 需要哪个就配哪个
    liaohongxing
    liaohongxing
    Aug 12, 2022
    3
    技术债。隔了几代升级想没有问题有点难。
    geekvcn
    geekvcn
    Aug 12, 2022 via iPhone
    4
    JAVA 项目经验,不要给老项目升级 JDK ,新项目再升级 JDK ,老项目升级 JDK 建议重构
    Slurp
    Slurp
    Aug 12, 2022
    6
    建议了解一下 JDK 9 引入的模块化,Java 对访问 JDK 内部实现的限制越来越严格了,尽量避免反射 Java 内部类,以及使用 sun 开头的包。

    要说还有什么坑,用了 finalize 的话,JDK 17 已经标记为 forRemoval 了…
    Bingchunmoli
    Bingchunmoli
    Aug 13, 2022 via Android
    7
    如果没有 oracle 直接更新 jdk 即可,如果使用了 sun 包下的功能使用 oraclejdk 尝试,不行就找替代方法说明被删除了
    ZhiyuanLin
    ZhiyuanLin
    Aug 13, 2022
    8
    先 11 ,修所有 error 和 depreciation 警告,然后再 17 ,重复一遍。
    不要想一步到位。
    night98
    night98
    Aug 14, 2022
    9
    lombok 需要升级,否则过不了编译。
    其他的都还行,主要注意下类似银行或者一些菜鸡三方的依赖,大概率会依赖 JDK8 某个过期的 class 比如 base64.class ,导致缺依赖压根没法编译,其他的一般来说不搞 hack 魔法不会出啥问题
    ychost
    ychost
    Aug 14, 2022
    10
    建议重构,老项目就不要升级
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4803 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.