一般java web项目第一次在jboss上发布的时候会遇到elasticsearch的jackson包和jboss的jackson包因为版本冲突,导致发布失败。
我当时的报错信息大概是这样的
ERROR [io.undertow.request] (default task-5) UT005023: Exception handling request to /cmall-admin-web/order/queryForPage.htm: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.common.xcontent.smile.SmileXContent
遇到这种情况,你可以尝试按照下面的方法修改后再发布:
1、首先在web项目中的WEB-INF目录下新建一个jboss-deployment-structure.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <jboss-deployment-structure> <deployment> <!-- Exclusions allow you to prevent the server from automatically adding some dependencies --> <!-- 主要作用就是将应用的日志输出到自己设定目录,而不是输出到wildfly的server.log里面 --> <exclusions> <module name="org.slf4j" /> <module name="org.slf4j.impl" /> <!-- 解决es的jackson包与其他jar包中的jackson冲突问题 --> <module name="com.fasterxml"/> <module name="org.jboss.resteasy.resteasy-jackson2-provider" /> </exclusions> </deployment> </jboss-deployment-structure>
2、在pom.xml中添加jackson-core的jar包
<!-- 解决es的jackson包与其他jar包中的jackson冲突问题 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.6.6</version> </dependency>