File tree Expand file tree Collapse file tree 1 file changed +14
-16
lines changed Expand file tree Collapse file tree 1 file changed +14
-16
lines changed Original file line number Diff line number Diff line change @@ -359,34 +359,32 @@ dependencies {
359
359
}
360
360
```
361
361
362
- ### 如何解决Jackson兼容性问题
362
+ ### 如何解决Jackson NoSuchMethodError报错
363
363
364
364
在之前的版本中,我们出于安全考虑升级 Jackson 到` 2.12 ` ,并使用了` 2.11 ` 版本中新增的方法` readValue(String src, Class<T> valueType) ` 。如果你的项目所依赖的其他组件又依赖了低于` 2.11 ` 版本的 Jackson ,可能会出现依赖冲突。
365
365
366
366
我们建议有能力的开发者,升级冲突组件至较新的兼容版本。例如,issue [ #125 ] ( https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient/issues/125 ) 版本 <` 2.3.x ` 的 SpringBoot 官方已不再维护,继续使用可能会有安全隐患。
367
367
368
- 如果难以升级,你可以使用下面的方式指定 Jackson 版本。
368
+ 如果难以升级,你可以用下面的方式引入 [ jackson-bom ] ( https://github.com/FasterXML/jackson-bom ) 来升级 Jackson 版本。根据 [ 通用漏洞披露信息 ] ( https://cve.mitre.org/ ) ,我们推荐升级到 ` 2.13.2.20220328 ` 版本。
369
369
370
370
#### Gradle
371
371
``` groovy
372
- implementation('com.fasterxml.jackson.core:jackson-databind') {
373
- version {
374
- strictly '2.12.5'
375
- }
376
- }
372
+ implementation(platform("com.fasterxml.jackson:jackson-bom:2.13.2.20220328"))
377
373
```
378
374
#### Maven
379
375
``` xml
380
- <dependencyManagement >
381
- <dependencies >
382
- <dependency >
383
- <groupId >com.fasterxml.jackson.core</groupId >
384
- <artifactId >jackson-databind</artifactId >
385
- <version >2.12.5</version >
386
- </dependency >
387
- </dependencies >
388
- </dependencyManagement >
376
+ <parent >
377
+ <groupId >com.fasterxml.jackson</groupId >
378
+ <artifactId >jackson-bom</artifactId >
379
+ <version >2.13.2.20220328</version >
380
+ </parent >
389
381
```
382
+
383
+ 如果出现其他组件的 ` NoSuchMethodError ` 报错,一般是依赖冲突导致。我们可以参考下面的解决思路:
384
+ 1 . 从报错信息中找到出现问题的组件(如上面的 Jackson )。根据你的项目的构建方式,选择 [ Gradle] ( https://docs.gradle.org/current/userguide/viewing_debugging_dependencies.html#sec:listing_dependencies ) 或 [ Maven] ( https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html ) 工具列出项目的依赖关系树,找到问题组件的所有版本号。
385
+ 2 . 从报错信息中找到正确的组件版本号。一般来说,导致报错的原因是使用的组件版本太低,所以我们可以找组件在依赖关系树中最新的版本号。
386
+ 3 . 指定组件版本。如果组件提供了 bom 依赖,可以使用上述方式引入 bom 依赖来指定版本。否则,根据你的项目的构建方式,选择 [ Gradle] ( https://docs.gradle.org/current/userguide/dependency_constraints.html#sec:adding-constraints-transitive-deps ) 或 [ Maven] ( https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html ) 的方式来指定版本。
387
+
390
388
### 更多常见问题
391
389
392
390
请看商户平台的[ 常见问题] ( https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay7_0.shtml ) ,或者[ 这里] ( https://wechatpay-api.gitbook.io/wechatpay-api-v3/chang-jian-wen-ti ) 。
You can’t perform that action at this time.
0 commit comments