BUG(6) : java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionExce

本文详细介绍了在SpringBoot项目中遇到的由于Jackson版本不一致导致的NoClassDefFoundError异常,通过调整jackson-databind版本为RELEASE解决了问题。
部署运行你感兴趣的模型镜像

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource [com/aliyun/et/industry/templateboot/core/config/CoreInterceptorConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]

at com.aliyun.et.industry.pangang.web.Application.main(Application.java:19) [classes/:na]

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

... 18 common frames omitted

Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:74) ~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.<init>(RequestMappingHandlerAdapter.java:188) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.createRequestMappingHandlerAdapter(WebMvcConfigurationSupport.java:593) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerAdapter(WebMvcConfigurationSupport.java:561) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at com.aliyun.et.industry.templateboot.core.config.CoreInterceptorConfig$$EnhancerBySpringCGLIB$$f7c93418.CGLIB$requestMappingHandlerAdapter$22(<generated>) ~[template-boot-core-1.3.0-20181120.075514-26.jar:na]

at com.aliyun.et.industry.templateboot.core.config.CoreInterceptorConfig$$EnhancerBySpringCGLIB$$f7c93418$$FastClassBySpringCGLIB$$5df00701.invoke(<generated>) ~[template-boot-core-1.3.0-20181120.075514-26.jar:na]

at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]

at com.aliyun.et.industry.templateboot.core.config.CoreInterceptorConfig$$EnhancerBySpringCGLIB$$f7c93418.requestMappingHandlerAdapter(<generated>) ~[template-boot-core-1.3.0-20181120.075514-26.jar:na]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]

at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]

... 19 common frames omitted

Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException

at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_181]

at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_181]

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_181]

at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_181]

... 33 common frames omitted

 

出错操作 : springboot导入json坐标后启动报错,具体依赖如下,

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.6</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.6</version>
        </dependency>

解决方法 : jackson-databind的版本改为 RELEASE 如下,

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.6</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>RELEASE</version>
        </dependency>

出错原因 : 未知

 

END。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### 问题分析 `java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.cfg.DatatypeFeature` 错误表明在运行时未能找到 `com.fasterxml.jackson.databind.cfg.DatatypeFeature` 类。这通常是由于以下原因之一引起的: - Jackson 库的版本不正确或过低,导致缺少该类。 - 项目中未正确导入 Jackson 相关依赖。 根据已知信息,`DatatypeFeature` 是 Jackson 库中的一个配置类,用于定义数据类型的特性。如果项目中使用了该类但未正确引入相关依赖,就会触发此类异常。 --- ### 解决方案 #### 1. 检查 Jackson 依赖版本 `DatatypeFeature` 类是在较新的 Jackson 版本中引入的。如果使用的 Jackson 版本较低,则可能无法找到该类。建议将 Jackson 的版本升级到 2.10 或更高版本[^1]。 在 Maven 项目的 `pom.xml` 文件中,确保包含以下依赖项,并将其版本设置为 2.10 或更高: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> <!-- 建议使用最新稳定版本 --> </dependency> ``` 如果使用的是 Gradle 构建工具,添加以下依赖项: ```gradle implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0' ``` --- #### 2. 验证依赖是否正确导入 即使在 `pom.xml` 或 `build.gradle` 中添加了正确的依赖,仍需确保这些依赖已成功下载并包含在项目的 classpath 中。可以通过以下方式验证: - 在 IDE(如 IntelliJ IDEA 或 Eclipse)中检查项目的依赖树,确认 `jackson-databind` 已正确加载。 - 使用命令行工具验证依赖是否正确解析。例如,在 Maven 项目中运行以下命令: ```bash mvn dependency:tree | grep jackson-databind ``` 如果输出显示的版本低于 2.10,则需要重新检查依赖配置。 --- #### 3. 确保兼容性 某些情况下,Spring Boot 或其他框架可能会自带 Jackson 的特定版本,这可能导致版本冲突。如果项目中同时存在多个 Jackson 版本,则可能导致类加载失败。解决方法包括: - 使用 Spring Boot 提供的 BOM(Bill of Materials)来管理依赖版本,确保所有 Jackson 相关依赖版本一致。 - 在 `pom.xml` 中显式排除旧版本的 Jackson 依赖。例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency> ``` --- #### 4. 测试与验证 完成上述步骤后,重新构建项目并运行测试用例,确保问题已解决。如果仍然出现 `ClassNotFoundException`,可以尝试清理并重新构建项目: ```bash mvn clean install ``` 或者在 Gradle 项目中: ```bash gradle clean build ``` --- ### 注意事项 如果问题仍未解决,可能需要进一步检查项目的运行环境(如容器、服务器等)是否正确加载了所需的依赖。此外,确保项目中没有手动打包的 JAR 文件覆盖了正确的依赖版本。 --- ### 示例代码 以下是一个简单的示例,展示如何使用 `DatatypeFeature`: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.cfg.DatatypeFeature; public class JacksonExample { public static void main(String[] args) { ObjectMapper objectMapper = new ObjectMapper(); // 启用 DatatypeFeature objectMapper.configure(DatatypeFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); System.out.println("Jackson configuration applied successfully."); } } ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值