V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chanlk
V2EX  ›  程序员

为什么要在 sdk 里面写一个和其他 jar 包完全一样的类(指类名)?

  •  
  •   chanlk · Jun 5, 2024 · 2037 views
    This topic created in 697 days ago, the information mentioned may be changed or developed.



    为什么要在 sdk 里面写一个和其他 jar 包完全一样的类(指类名)
    这里面的几个 okhttp 的类把我坑惨了,以为是依赖冲突了,但是找半天都没找到。

    本地运行 ok,测试运行也 ok ,到了线上就炸了。
    后面发现线上运行的时候用的是这个 sdk 里的类,这个类里面少了一些方法,就报错了!


    为啥要这么做呢?我的娘咧~

    贴个 sdk 地址:
    https://mvnrepository.com/artifact/com.huaweicloud/esdk-obs-java/3.20.6.2
    Supplement 1  ·  Jun 5, 2024
    不止是类名,路径名也是完全一样的
    Supplement 2  ·  Jun 7, 2024
    13 replies    2024-06-07 10:35:56 +08:00
    cheneydog
        1
    cheneydog  
       Jun 5, 2024
    打包方式的问题,把依赖打包到内部了。
    AmanoPro
        2
    AmanoPro  
       Jun 5, 2024
    看来你有没有被 com.sun.org.apache.xpath.internal.operations.String 坑过
    chanlk
        3
    chanlk  
    OP
       Jun 5, 2024
    @AmanoPro 你这还好,我这个是全路径+类名完全一样的
    lix7
        4
    lix7  
       Jun 5, 2024
    干过一次,是为了重写私有方法,把内部逻辑暴露。
    virusdefender
        5
    virusdefender  
       Jun 5, 2024
    patch 对用的类,修复 bug 或者暴露私有方法之类的
    chanlk
        6
    chanlk  
    OP
       Jun 5, 2024
    @lix7 @virusdefender 那如何保证 jvm 加载的时候使用的是你们修改过的呢?路径名+类名都是一样的
    CDuXZMAPgHp1q9ew
        7
    CDuXZMAPgHp1q9ew  
       Jun 5, 2024
    使用自定义 classloader 加载, 做类隔离.
    virusdefender
        8
    virusdefender  
       Jun 5, 2024
    最简单的就是把 okhttp 的 jar 在 classpath 中放在最前面,但是他这个 patch 可能就失效了
    cslive
        9
    cslive  
       Jun 6, 2024
    魔改里面的方法,这种情况你将它的代码粘贴出来,你也魔改
    aa51513
        10
    aa51513  
       Jun 6, 2024 via Android
    @chanlk 依赖树有层级的,按照依赖树层级来
    weijancc
        11
    weijancc  
       Jun 6, 2024
    为了重写类的方法. 华为这个是开放 sdk, 重写别人的类就有点过分了
    tianice
        12
    tianice  
       Jun 6, 2024   ❤️ 1
    遥遥领先这水平太 low 了,没听说有个叫 maven-shade-plugin 的插件
    chanlk
        13
    chanlk  
    OP
       Jun 7, 2024
    @virusdefender 这个做法我个人认为不可取,如果是公开的 sdk 更不可取,应该如 12 楼说的用 maven-shade-plugin 插件
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2716 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 13:45 · PVG 21:45 · LAX 06:45 · JFK 09:45
    ♥ Do have faith in what you're doing.