Java 如何强制JBoss部署使用特定版本的依赖项而不是已安装的模块?
将*.ear部署到JBoss时,它总是使用错误版本的Java 如何强制JBoss部署使用特定版本的依赖项而不是已安装的模块?,java,maven,jboss,keycloak,Java,Maven,Jboss,Keycloak,将*.ear部署到JBoss时,它总是使用错误版本的com.fasterxml.jackson.core 我的代码使用com.fasterxml.jackson.core 2.9.0版的功能,编译得很好,但是在JBoss中调用代码时,我得到了java.lang.NoSuchFieldError 在我看来,JBoss类加载器使用的是已经安装的jackson模块版本2.5.0 如何让JBoss classloader使用2.9.0版进行部署 形势 我正在开发一个插件,通过3.2.1版在本地进行测试
com.fasterxml.jackson.core
我的代码使用com.fasterxml.jackson.core 2.9.0版的功能,编译得很好,但是在JBoss中调用代码时,我得到了java.lang.NoSuchFieldError
在我看来,JBoss类加载器使用的是已经安装的jackson模块版本2.5.0
如何让JBoss classloader使用2.9.0版进行部署
形势
我正在开发一个插件,通过3.2.1版在本地进行测试
ear是通过在启动映像之前将其复制到$JBOSS_HOME/standalone/deployments来部署的,在我使用jackson 2.9中的函数之前,该插件工作正常
到目前为止我所尝试的:
我通过pom.xml锁定了该版本:
<dependencyManagement>
<dependencies>
<dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
jackson 2.5库是预安装的,因为KeyClope依赖于它:
find ${JBOSS_HOME}/modules | grep jackson-core
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/module.xml
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.5.4.jar
当我解压我的*.ear包时,我在libs/
中找到了版本正确的jackson JAR(META-INF/MANIFEST.MF
说包版本:2.9.0
:
ls lib | grep jackson
jackson-annotations.jar
jackson-core.jar
jackson-databind.jar
有人能向我解释一下,如果我能让JBoss使用正确版本的jackson,以及如何让JBoss使用正确版本的jackson吗
谢谢!尝试将以下模块添加到
中
find ${JBOSS_HOME}/modules | grep jackson-core
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/module.xml
/opt/jboss/keycloak/modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.5.4.jar
ls lib | grep jackson
jackson-annotations.jar
jackson-core.jar
jackson-databind.jar
<module name="org.jboss.resteasy.resteasy-jackson2-provider" />
<module name="com.fasterxml.jackson.module.jackson-module-jaxb-annotations" />
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-base" />