我们项目使用的是 Spring Boot,它默认使用的 org.json 的依赖是 20140107 版本,项目需要接入阿里云的一个 sdk,这个项目中使用的 org.json 的版本是 20170516 的,新增了一些特性,实际调用的时候就会报 NoSuchMethod 的错误。
这种情况有没有什么解决办法?
谢谢。
1
JavaFirstMaster 2018-06-05 19:20:19 +08:00 via Android
maven exclude 了解一下
|
2
tangshiba OP @JavaFirstMaster 阿里云引用的版本比 Spring Boot 的高,在阿里云那里 exclude 的话还是会报错吧,又不好在 Spring Boot 里 exclude。
|
3
justicelove 2018-06-05 21:20:03 +08:00
版本仲裁就得决定使用一个版本,既然阿里云用了高版本的特性,那就仲裁掉低版本好了, 如果没有向下兼容,那就不好弄了
|
5
FRankie222 2018-06-05 21:28:45 +08:00 via iPhone
@tangshiba springboot 里面的没法 exclexclude 吗?
|
6
wdlth 2018-06-05 21:31:05 +08:00
Spring Boot 的 org.json 不是 optional 的么……不显式引入是不包含的
|
7
yanjinbin 2018-06-05 21:35:09 +08:00
idea 有个插件叫 maven helper 你把低版本的 exclude 掉就可以了 nosuchmethoderror 通常是在新版本的新方法在低版本找不到 也就是实际引用的是低版本
|
8
lululau 2018-06-05 21:42:37 +08:00
难道不是声明一个对 org.json 新版的直接依赖更好吗
|
9
tangshiba OP @justicelove 架构师不是很同意这么弄。
|
11
billlee 2018-06-05 23:26:20 +08:00
在 <dependencyManagement> 中指定依赖新版本的 org.json
|