tangshiba
V2EX  ›  Java

请教一个关于 Maven 依赖冲突的问题

  •  
  •   tangshiba · Jun 5, 2018 · 3098 views
    This topic created in 2906 days ago, the information mentioned may be changed or developed.

    我们项目使用的是 Spring Boot,它默认使用的 org.json 的依赖是 20140107 版本,项目需要接入阿里云的一个 sdk,这个项目中使用的 org.json 的版本是 20170516 的,新增了一些特性,实际调用的时候就会报 NoSuchMethod 的错误。

    这种情况有没有什么解决办法?

    谢谢。

    11 replies    2018-06-05 23:26:20 +08:00
    JavaFirstMaster
        1
    JavaFirstMaster  
       Jun 5, 2018 via Android
    maven exclude 了解一下
    tangshiba
        2
    tangshiba  
    OP
       Jun 5, 2018
    @JavaFirstMaster 阿里云引用的版本比 Spring Boot 的高,在阿里云那里 exclude 的话还是会报错吧,又不好在 Spring Boot 里 exclude。
    justicelove
        3
    justicelove  
       Jun 5, 2018
    版本仲裁就得决定使用一个版本,既然阿里云用了高版本的特性,那就仲裁掉低版本好了, 如果没有向下兼容,那就不好弄了
    Foralrec
        4
    Foralrec  
       Jun 5, 2018
    @tangshiba 取高版本,不行就拆开做个 proxy 单独部署. 再不就用 jvm 隔离的框架
    FRankie222
        5
    FRankie222  
       Jun 5, 2018 via iPhone
    @tangshiba springboot 里面的没法 exclexclude 吗?
    wdlth
        6
    wdlth  
       Jun 5, 2018
    Spring Boot 的 org.json 不是 optional 的么……不显式引入是不包含的
    yanjinbin
        7
    yanjinbin  
       Jun 5, 2018
    idea 有个插件叫 maven helper 你把低版本的 exclude 掉就可以了 nosuchmethoderror 通常是在新版本的新方法在低版本找不到 也就是实际引用的是低版本
    lululau
        8
    lululau  
       Jun 5, 2018
    难道不是声明一个对 org.json 新版的直接依赖更好吗
    tangshiba
        9
    tangshiba  
    OP
       Jun 5, 2018
    @justicelove 架构师不是很同意这么弄。
    tangshiba
        10
    tangshiba  
    OP
       Jun 5, 2018
    @wdlth 我明天去找找看,可能其他项目引用了。
    billlee
        11
    billlee  
       Jun 5, 2018
    在 <dependencyManagement> 中指定依赖新版本的 org.json
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1373 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 17:13 · PVG 01:13 · LAX 10:13 · JFK 13:13
    ♥ Do have faith in what you're doing.