完整报错信息

java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.JsonParser$NumberTypeFP com.fasterxml.jackson.core.JsonParser.getNumberTypeFP()

解决办法

出现 java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.JsonParser$NumberTypeFP com.fasterxml.jackson.core.JsonParser.getNumberTypeFP()' 错误的原因是 Jackson 库版本不兼容,具体表现为:

  1. 方法不存在于当前版本getNumberTypeFP() 是 Jackson 2.14 及以上版本新增的方法。
  2. 依赖冲突:项目中可能存在多个 Jackson 版本,旧版本覆盖了新版本。

解决步骤:

1. 统一 Jackson 版本
  • 确保所有 Jackson 组件(jackson-core, jackson-databind, jackson-annotations 等)使用相同版本(推荐 2.14+)。
  • Maven 配置示例(pom.xml):
    <properties>
        <jackson.version>2.15.3</jackson.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
    </dependencies>
    
  • Gradle 配置示例(build.gradle):
    implementation 'com.fasterxml.jackson.core:jackson-core:2.15.3'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3'
    
2. 排查依赖冲突
  • 使用以下命令检查依赖树:
    • Maven
      mvn dependency:tree -Dincludes=com.fasterxml.jackson.core
      
    • Gradle
      gradle dependencies --configuration runtimeClasspath | grep 'com.fasterxml.jackson'
      
  • 如果发现旧版本被间接引入,通过 <exclusion>exclude 移除冲突:
    <!-- Maven 示例:排除旧版本 -->
    <dependency>
        <groupId>some.library</groupId>
        <artifactId>problematic-library</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
3. 强制指定版本(可选)
  • 在 Maven 中通过 <dependencyManagement> 或 Gradle 的 resolutionStrategy 强制统一版本:
    configurations.all {
        resolutionStrategy {
            force 'com.fasterxml.jackson.core:jackson-core:2.15.3',
                  'com.fasterxml.jackson.core:jackson-databind:2.15.3'
        }
    }
    
4. 更新 Spring Boot(如适用)
  • 如果使用 Spring Boot,它默认管理 Jackson 版本。升级 Spring Boot 到 3.x 或更高版本(默认使用 Jackson 2.15+):
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.5</version>
    </parent>
    

验证解决

  • 清理构建缓存(mvn cleangradle clean),重新编译并运行。
  • 确认 JsonParser.class 的版本:
    unzip -l path/to/jackson-core-2.15.3.jar | grep JsonParser.class
    

通过以上步骤,版本冲突问题通常可彻底解决。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐