You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级javamelody-core至1.66.0后启动JBOSS 7.4失败

问题描述

将项目依赖的javamelody-core版本从1.65.0升级到1.66.0后,启动JBOSS服务器时出现类加载冲突错误,已检查项目子依赖未发现问题,求解决思路。

错误日志
10:22:20,187 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."coecontextTest.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."coecontextTest.war".POST_MODULE: WFLYSRV0153: Falha ao processar a fase POST_MODULE de deployment "coecontextTest.war"
    at org.jboss.as.server@15.0.5.Final-redhat-00001//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:189)
    at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
    at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
    at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization for class org.hibernate.validator.internal.engine.ValidatorFactoryImpl: when selecting method org.hibernate.validator.HibernateValidatorFactory.usingContext()Lorg/hibernate/validator/HibernateValidatorContext; the class loader 'org.hibernate.validator@6.0.22.Final-redhat-00002' @554864d (instance of org.jboss.modules.ModuleClassLoader, child of 'app' jdk.internal.loader.ClassLoaders$AppClassLoader) for super interface org.hibernate.validator.HibernateValidatorFactory, and the class loader 'deployment.coecontextTest.war' @13bc62ff (instance of org.jboss.modules.ModuleClassLoader, child of 'app' jdk.internal.loader.ClassLoaders$AppClassLoader) of the selected method's type, org.hibernate.validator.internal.engine.ValidatorFactoryImpl have different Class objects for the type org.hibernate.validator.HibernateValidatorContext used in the signature
    at deployment.coecontextTest.war//org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:38)
    at deployment.coecontextTest.war//org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:364)
    at org.hibernate.validator.cdi@6.0.22.Final-redhat-00002//org.hibernate.validator.cdi.ValidationExtension.<init>(ValidationExtension.java:120)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at org.jboss.as.weld.common@7.4.2.GA-redhat-00002//org.jboss.as.weld.deployment.WeldPortableExtensions.tryRegisterExtension(WeldPortableExtensions.java:59)
    at org.jboss.as.weld@7.4.2.GA-redhat-00002//org.jboss.as.weld.deployment.processors.WeldPortableExtensionProcessor.loadAttachments(WeldPortableExtensionProcessor.java:119)
    at org.jboss.as.weld@7.4.2.GA-redhat-00002//org.jboss.as.weld.deployment.processors.WeldPortableExtensionProcessor.deploy(WeldPortableExtensionProcessor.java:79)
    at org.jboss.as.server@15.0.5.Final-redhat-00001//org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:182)
    ... 8 more
解决思路
  • 对比javamelody-core版本依赖差异:用mvn dependency:tree -Dincludes=org.hibernate.validator命令分别在1.65.0和1.66.0版本下执行,查看是否新增或升级了Hibernate Validator相关依赖,定位冲突来源。
  • 排除javamelody-core中的Hibernate Validator依赖:如果1.66.0版本引入了与JBOSS自带版本冲突的Hibernate Validator,在pom.xml中配置依赖排除:
    <dependency>
        <groupId>net.bull.javamelody</groupId>
        <artifactId>javamelody-core</artifactId>
        <version>1.66.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
            <!-- 如有其他相关子依赖也一并排除 -->
        </exclusions>
    </dependency>
    
  • 配置JBOSS类加载优先级:在项目的jboss-deployment-structure.xml中指定优先使用服务器提供的Hibernate Validator模块:
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <module name="org.hibernate.validator" export="true"/>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
    
  • 统一Hibernate Validator版本:如果项目自身主动引入了Hibernate Validator,确保其版本与JBOSS自带的6.0.22.Final-redhat-00002一致,或者直接移除该依赖,让服务器提供。
  • 清理重建项目:执行mvn clean install清理旧依赖包,重新构建后再部署到JBOSS。

内容的提问来源于stack exchange,提问作者Guilherme Dambros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:14:59