繁体   English   中英

JBoss EAP 7中缺少Jackson依赖关系

[英]Missing Jackson Dependencies in JBoss EAP 7

在JBoss EAP环境中使用jackson-databind时遇到问题。 我们通常部署到Tomcat 8,它可以完美运行。 Jackson会自行正常地反序列化对象,但是在以下情况下: mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); 被执行,我们收到此错误:

13:18:26,170 ERROR java.lang.NoSuchFieldError: SNAKE_CASE

我对错误进行了很多解释,但似乎JBoss无法找到jackson-databind依赖项。 我们验证了该类确实在已部署的WAR文件中。 这就是我们的POM中的功能:

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

当我们将Java类复制到代码库中时,它可以在JBoss上完美运行,但这显然不是理想的选择。 有人见过JBoss以前没有找到依赖吗?

Jackson数据绑定已作为JBoss模块存在,因此,您的异常是由于在应用程序部署期间库加载冲突而导致的。
更准确地说,杰克逊数据绑定位于版本2.5.4的jboss-eap-7.0\\modules\\system\\layers\\base\\com\\fasterxml\\jackson\\core\\jackson-databind\\main\\中。 因此,您应该将maven依赖项设置为<scope>provided</scope>
但是,您要求在2.5.4和2.8.9之间进行一些更改。 您没有提到打算使用Jackson的哪些功能,但是至少,您不能使用SNAKE_CASE因为它在较早的版本中尚不存在。 一种选择是您可以回CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES较早的变体CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES 如果不可接受,则必须使用jboss-deployment-structure.xml定制JBoss类的加载。 使用此描述符,您可以选择排除JBoss模块提供的jackson数据绑定,然后可以将jackson lib与您的部署捆绑在一起。 您可以在JBoss / Wildfly Wiki中找到更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM