java.lang.ClassNotFoundException: com.fasterxml.jackson.core.util.DefaultPrettyPrinter$Indenter

本文分析了Spring MVC配置中因未正确引入依赖jar包导致的MappingJackson2HttpMessageConverter创建失败的问题,提供了详细的错误信息及解决方案。

报错信息:
[2018-12-28 10:37:56,309]:ERROR DispatcherServlet:502 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0' defined in ServletContext resource [/WEB-INF/config/mvc/dispatcher-servlet.xml]: Cannot create inner bean 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#70d332f4' of type [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter] while setting bean property 'messageConverters' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#70d332f4': Failed to introspect bean class [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultPrettyPrinter$Indenter
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1531)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1276)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:171)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1260)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2002)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#70d332f4': Failed to introspect bean class [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultPrettyPrinter$Indenter
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:269)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1118)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1091)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)
    ... 37 more
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultPrettyPrinter$Indenter
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getDeclaredMethods(Class.java:1855)
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247)
    ... 42 more
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.util.DefaultPrettyPrinter$Indenter
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
    ... 49 more
    
分析:
    java.lang.ClassNotFoundException: com.fasterxml.jackson.core.util.DefaultPrettyPrinter$Indenter
    在配置springMVC配置文件中有配置MappingJackson2HttpMessageConverter,此类需要配置json相关的依赖jar包。
     
以上,TKS.

<think> 首先,用户的问题是:“我想查找解决Java中出现ClassNotFoundException: com.fasterxml.jackson.core.StreamReadFeature错误的方法”。这是一个具体的错误:ClassNotFoundException for com.fasterxml.jackson.core.StreamReadFeature。 用户提供了几个引用: - [^1]: Talks about ClassNotFoundException for JacksonFeature in Spring Boot with Elasticsearch. - [^2]: Discusses Jackson-related errors in SparkStreaming, mentioning ClassNotFoundException for jackson databind Module or jackson core. - [^3]: Shares an error in Spring Boot where NoClassDefFoundError occurred due to wrong Jackson version, solved by using automatic version matching. - [^4]: Provides solution for ClassNotFoundException for DefaultPrettyPrinter$Indenter, emphasizing adding Jackson dependencies in POM. 这些引用都涉及到 Jackson 库的依赖问题,特别是缺少类或版本不匹配的错误。用户的问题特定于 StreamReadFeature,但原理类似。 系统指令要求: - 所有行内数学表达式必须使用 $...$ 格式(但用户问题中没有数学相关内容,所以可能不需要)。 - 独立公式使用 $$...$$(同样,不涉及数学)。 - LaTeX 语法正确(这里可能不适用)。 - 使用中文回答。 - 生成相关问题。 - 引用段落末尾添加引用标识,如 [^1]。 用户在上一次的交互中,似乎没有直接的问题历史,因为这是新的查询。用户说“参考站内引用”,并提供了一些引用,但这些引用不是用户真正的需求;我需要基于用户当前的问题回答。 当前问题是:解决 ClassNotFoundException: com.fasterxml.jackson.core.StreamReadFeature。 这个错误通常是由于缺少Jackson库或版本不兼容造成的。StreamReadFeature 是 Jackson 库中的一个类,位于 jackson-core 包中。 常见的解决方法: 1. 确保添加了正确的Jackson依赖项。 2. 检查版本是否兼容。 3. 使用Maven或Gradle管理依赖。 从引用中提取相关信息: - [^3]提到移除版本号让Spring Boot自动匹配版本。 - [^4]建议添加所有必要的Jackson依赖:jackson-core, jackson-databind, jackson-annotations。 - [^2]讨论SparkStreaming中的类似错误,强调依赖冲突或缺失。 所以,回答时应基于这些原则。 结构回答: - 解释错误原因:缺少Jackson库中的StreamReadFeature类,可能是因为依赖未添加或版本太低。 - 提供解决方法: - 对于Maven项目,添加Jackson依赖到pom.xml。 - 确保使用兼容的版本;建议使用最新版本或让Spring Boot管理版本。 - 检查依赖冲突。 - 结尾生成相关问题。 使用中文回答。 添加引用标识:当引用特定段落时添加,如基于[^3]和[^4]。 最终回答大纲: 1. **解释错误**:ClassNotFoundException 表示类未找到,通常是依赖缺失或版本问题。 2. **解决方法**: - 添加Jackson依赖:例如,在pom.xml中添加jackson-core。 - 指定版本或使用自动版本管理(如Spring Boot)。 - 确保所有Jackson组件版本一致。 3. **预防措施**:使用依赖管理工具避免冲突。 相关问题: - 如何更新Jackson版本以避免此类错误? - Jackson库依赖冲突怎么解决? - 在Spring Boot中如何自动管理Jackson版本? </think> ### 解决 Java 中出现 ClassNotFoundException: com.fasterxml.jackson.core.StreamReadFeature 错误的方法 `ClassNotFoundException: com.fasterxml.jackson.core.StreamReadFeature` 错误表示 Java 应用程序运行时无法找到 Jackson 库中的 `StreamReadFeature` 类。Jackson 是一个广泛使用的 JSON 处理库,`StreamReadFeature` 是其核心组件的一部分,用于控制 JSON 流解析行为。这个错误通常是由于依赖缺失、版本不兼容或依赖冲突引起的,尤其是在使用 Maven、Gradle 或 Spring Boot 的项目中。以下是系统性的解决方法,基于常见实践和参考引用中的经验。 #### 错误原因分析 - **依赖缺失**:项目中未添加 `jackson-core` 依赖或版本过低(`StreamReadFeature` 是在 Jackson 2.10.0 及以上版本引入的)。 - **版本不兼容**:不同 Jackson 组件(如 `jackson-core`、`jackson-databind`、`jackson-annotations`)版本不一致,导致类加载失败。 - **依赖冲突**:项目中其他库(如 Spring Boot、SparkStreaming 或 Elasticsearch 客户端)引入了冲突的 Jackson 版本,覆盖了所需版本。 - **构建工具问题**:Maven 或 Gradle 依赖未正确解析,或缓存导致旧版本被使用(引用[^2]和[^4]中提到的类似错误)。 #### 解决方法 按照以下步骤逐步解决错误。推荐优先使用依赖管理工具(如 Maven 或 Gradle)来简化过程。 ##### 1. **添加或更新 Jackson 依赖** - **确保添加 `jackson-core` 依赖**:`StreamReadFeature` 属于 `jackson-core` 模块。在项目的 `pom.xml`(Maven)或 `build.gradle`(Gradle)中添加依赖。 - **Maven 示例**: ```xml <!-- 添加必要的 Jackson 依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.14.0</version> <!-- 推荐使用 2.10.0+ 版本 -->
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值