V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
overthemoon
V2EX  ›  程序员

JDK8 升级到 JDK17 怎么搞

  •  1
     
  •   overthemoon · 2022-08-12 18:25:39 +08:00 · 3826 次点击
    这是一个创建于 830 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    要说还有什么坑,用了 finalize 的话,JDK 17 已经标记为 forRemoval 了…
    Bingchunmoli
        7
    Bingchunmoli  
       2022-08-13 01:50:44 +08:00 via Android
    如果没有 oracle 直接更新 jdk 即可,如果使用了 sun 包下的功能使用 oraclejdk 尝试,不行就找替代方法说明被删除了
    ZhiyuanLin
        8
    ZhiyuanLin  
       2022-08-13 13:10:49 +08:00
    先 11 ,修所有 error 和 depreciation 警告,然后再 17 ,重复一遍。
    不要想一步到位。
    night98
        9
    night98  
       2022-08-14 02:05:54 +08:00
    lombok 需要升级,否则过不了编译。
    其他的都还行,主要注意下类似银行或者一些菜鸡三方的依赖,大概率会依赖 JDK8 某个过期的 class 比如 base64.class ,导致缺依赖压根没法编译,其他的一般来说不搞 hack 魔法不会出啥问题
    ychost
        10
    ychost  
       2022-08-14 10:00:18 +08:00
    建议重构,老项目就不要升级
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1033 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.