当前位置: 首页 > 知识库问答 >
问题:

无法在Spring Boot中使用XmlMapper(Jackson dataformat xml),错误:requirePropertyOrdering()Z

赵英范
2023-03-14

我使用了SpringBoot1.5版。2和Maven默认pom。xml

...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
</parent>
...

因为SpringBoot没有来自Maven:jackson dataformat xml的XmlMapper,所以我在pom中添加了这个依赖项。xml

    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-xml</artifactId>
      <version>2.8.7</version>
    </dependency>

并检查项目的Jackson依赖项,它们都有相同的版本2.8。7(最新)。

    mvn dependency:tree -Dincludes=com.fasterxml.jackson.core
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ demo ---
[INFO] com.example:demo:jar:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.5.2.RELEASE:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.8.7:compile
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.8.7:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-core:jar:2.8.7:compile
[INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.7:compile

当我运行应用程序时,它无法启动,因为在SpringBoot中发现了NoSuchMethod错误。

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter]: Factory method 'httpPutFormContentFilter' threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    ... 26 common frames omitted
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:564) ~[jackson-databind-2.8.7.jar:2.8.7]
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:474) ~[jackson-databind-2.8.7.jar:2.8.7]
    at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:588) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.<init>(MappingJackson2HttpMessageConverter.java:57) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:61) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.web.filter.HttpPutFormContentFilter.<init>(HttpPutFormContentFilter.java:63) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter.<init>(OrderedHttpPutFormContentFilter.java:29) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]

对这个问题有什么想法吗?我想使用Jackson库中的XmlMapper将XML字符串反序列化/序列化为对象,反之亦然(不是从HTTPRequest而是从内部)。

这是完整的pom。Maven的xmlhttps://pastebin.com/LMujJY7e

共有2个答案

吉鸿宝
2023-03-14

请尝试将父pom文件中的jackson bom版本更新为2.10。这为我解决了这个问题。

<jackson-bom.version>2.10.4</jackson-bom.version>
邢晗日
2023-03-14

我认为您遇到了依赖项的版本兼容性问题。

我使用Spring靴1.5。2使用jackson dataformat xml没有任何问题。

这是我身体的一部分。格拉德尔

ext {
    springBootVersion = '1.5.2.RELEASE'
}

compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.8.5'

希望能有帮助

 类似资料:
  • 我在rest api应用程序中使用Springboot 1.5.7,并使用thymeleaf模板从我的api发送电子邮件。但是当我将spring boot的版本更新到2.0.2时,它抛出了404错误,即“错误解析模板”错误,模板可能不存在,或者任何配置的模板解析程序都无法访问“。 下面是application.yml中的配置 pom.xml中的thymeleaf版本 下面是我正在使用的模板结构,

  • 我知道有好几篇关于这件事的帖子,但没有任何具体的帮助。我有一个Java Springboot rest API,它在localhost上运行良好,但在尝试作为jar运行时会抛出一个错误。 这是我的主要课程: 这是我尝试运行jar文件时的输出: 我的pom。xml是我所有修复这一问题的尝试中的一个烂摊子,但它是: 感谢任何帮助。谢谢你看一看!

  • 我写Web应用程序使用泽西2.22.1和杰克逊2.6.3。我的pom.xml是这样的: 目标是为JSON和XML映射使用不同的自定义ObjectMapper。我创建了两个提供程序类:JSONMapperProvider 和XMLMapperProvider 它们都在同一个包中,该包在应用程序资源类中注册 若我向@products(MediaType.APPLICATION_JSON)的方法发出GE

  • 我目前正在学习springboot。通过选择spring starter project,我在STS中创建了一个项目。spring boot版本2.2.2和已导入JPA、H2和RestRepository。 下面是我的领域类, 应用属性 存储库类 在波姆。xml显示了下面提到的错误。不确定,因为这一点,我得到了错误,但我没有在pom的任何变化。xml 在运行项目时,我得到了以下错误,不知道为什么整

  • 目前,我正在尝试将JWT身份验证集成到现有的Spring Boot Webflux项目中。作为模板,我使用了这篇媒体文章:https://medium.com/@ard333/authentication-and-authorization-using-jwt-on-spring-webflux-29b81f813e78。如果我将注释@EnableWebFluxSecurity放在我的WebSec

  • 你好,我写和销售机票的后端服务,我试图为这个api编写测试。当我试图为AirlineCompanyController类编写createAirlineCompany测试时,我得到了这个错误。 我的测试班: 还有我的航空公司服务舱: 我的航空公司Imp课程: 我得到的错误是来自then返回()方法,我不知道如何解决这个问题。谢谢大家。