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

升级Hibernate5与JPA2后启动JBoss报ClassNotFoundException求助

问题:升级Hibernate 5与JPA 2后JBoss EAP 6.2启动报错

尝试过多种类似问题的解决方案均无效,特求助。将项目升级至Hibernate 5与JPA 2后,启动JBoss EAP 6.2服务器时出现如下运行时错误:

org.springframework.beans.factory.BeanCreationException: Error creating
bean with name org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': 
Lookup method resolution failed; nested exception is java.lang.IllegalStateException: 
Failed to introspect Class [org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean] 
from ClassLoader [ModuleClassLoader 
for Module "deployment.sfv-webapp.war:main" from Service Module Loader]
[...]
Caused by: java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider

以下是项目pom.xml中的相关依赖:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.12.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.3.Final</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>5.2.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.2.4.RELEASE</version>
</dependency>

已知信息:已引入所需依赖,但怀疑存在Jar版本冲突;项目为遗留项目,数月后终止维护,必须使用Hibernate 5.4.12与javax(不可使用jakarta)。


解决方案

1. 修正validation-api版本匹配

Hibernate Validator 5.4.x对应的是Bean Validation 1.1规范,需将validation-api版本从2.0.1.Final调整为1.1.0.Final,避免版本不兼容:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

2. 排除JBoss EAP自带的Validation模块

JBoss EAP 6.2默认集成了旧版本的Bean Validation实现(Hibernate Validator 4.x + validation-api 1.0),会与项目依赖冲突。需在项目的WEB-INF目录下创建jboss-deployment-structure.xml文件,排除服务器自带的相关模块:

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <!-- 排除服务器自带的validation API模块 -->
            <module name="javax.validation.api" />
            <!-- 排除服务器自带的Hibernate Validator实现 -->
            <module name="org.hibernate.validator" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

3. 统一Spring依赖版本

确保${spring.version}变量的值为5.2.4.RELEASE,与其他Spring依赖版本保持一致,避免Spring内部版本冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:38:13