Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制JBoss部署使用特定版本的依赖项而不是已安装的模块?_Java_Maven_Jboss_Keycloak - Fatal编程技术网

Java 如何强制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版在本地进行测试

将*.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版在本地进行测试

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" />