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

升级WildFly30+Java17时出现javax/transaction/SystemException类找不到错误

问题描述
  • 运行环境:WildFly 30 + 最新版Spring + Hibernate Core 6.4.4.Final + Java 17
  • 报错信息:部署服务器时抛出java.lang.NoClassDefFoundError: javax/transaction/SystemException,项目无直接引入javax相关依赖
  • 关键错误栈:
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: javax/transaction/SystemException [in thread "ServerService Thread Pool -- 86"]
at java.lang.Class.forName0(Native Method) ~[?:?]
at java.lang.Class.forName(Class.java:467) ~[?:?]
at org.jboss.logging.Logger.doGetMessageLogger(Logger.java:2562) ~[jboss-logging-3.5.0.Final.jar:3.5.0.Final]
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2530) ~[jboss-logging-3.5.0.Final.jar:3.5.0.Final]
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2516) ~[jboss-logging-3.5.0.Final.jar:3.5.0.Final]
at org.hibernate.cache.ehcache.internal.EhCacheMessageLogger.<init>(EhCacheMessageLogger.java:31) ~[hibernate-ehcache-6.0.0.Alpha7.jar:6.0.0.Alpha7]
at org.hibernate.cache.ehcache.internal.EhcacheRegionFactory.<init>(EhcacheRegionFactory.java:46) ~[hibernate-ehcache-6.0.0.Alpha7.jar:6.0.0.Alpha7]
...
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:600) ~[spring-orm-6.1.4.jar:6.1.4]
解决方案

1. 替换过时的Hibernate Ehcache依赖

错误栈显示使用的hibernate-ehcache-6.0.0.Alpha7是老旧的测试版本,Hibernate 6+已弃用该模块,改用基于JCache标准的hibernate-jcache。需要移除旧依赖,添加适配的JCache实现(如Ehcache 3.x):
Maven配置示例:

<!-- 移除旧的hibernate-ehcache依赖 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>6.0.0.Alpha7</version>
</dependency>

<!-- 添加新的JCache依赖 -->
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-jcache</artifactId>
    <version>6.4.4.Final</version>
</dependency>
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.10.8</version>
</dependency>

2. 配置Hibernate使用JCache作为缓存提供者

在Hibernate配置文件(如hibernate.cfg.xml)或Spring配置中,指定JCache缓存工厂:

hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
hibernate.jcache.provider=org.ehcache.jsr107.EhcacheCachingProvider

3. 清理旧Java EE API依赖

WildFly 30基于Jakarta EE 10,所有javax.*包已迁移至jakarta.*。需确保依赖中无旧Java EE API:

  • 检查间接依赖:使用Maven的dependency:tree命令排查是否有依赖引入javax.transaction包,如有则排除:
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.4.4.Final</version>
    <exclusions>
        <exclusion>
            <groupId>javax.transaction</groupId>
            <artifactId>javax.transaction-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4. 确认WildFly事务模块启用

在WildFly的standalone.xml或domain.xml中,确保事务子系统已正确配置:

<subsystem xmlns="urn:jboss:domain:transactions:8.0">
    <core-environment>
        <process-id>
            <uuid/>
        </process-id>
    </core-environment>
    <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
    <coordinator-environment default-timeout="300"/>
</subsystem>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:32:08