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 {
359359}
360360```
361361
362- ### 如何解决Jackson兼容性问题
362+ ### 如何解决Jackson NoSuchMethodError报错
363363
364364在之前的版本中,我们出于安全考虑升级 Jackson 到` 2.12 ` ,并使用了` 2.11 ` 版本中新增的方法` readValue(String src, Class<T> valueType) ` 。如果你的项目所依赖的其他组件又依赖了低于` 2.11 ` 版本的 Jackson ,可能会出现依赖冲突。
365365
366366我们建议有能力的开发者,升级冲突组件至较新的兼容版本。例如,issue [ #125 ] ( https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient/issues/125 ) 版本 <` 2.3.x ` 的 SpringBoot 官方已不再维护,继续使用可能会有安全隐患。
367367
368- 如果难以升级,你可以使用下面的方式指定 Jackson 版本。
368+ 如果难以升级,你可以用下面的方式引入 [ jackson-bom ] ( https://github.com/FasterXML/jackson-bom ) 来升级 Jackson 版本。根据 [ 通用漏洞披露信息 ] ( https://cve.mitre.org/ ) ,我们推荐升级到 ` 2.13.2.20220328 ` 版本。
369369
370370#### Gradle
371371``` 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"))
377373```
378374#### Maven
379375``` 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 >
389381```
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+
390388### 更多常见问题
391389
392390请看商户平台的[ 常见问题] ( 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