新版本Infinispan是否采用Jakarta EE API?测试遇javax类缺失问题
解决Infinispan 14+中
javax.transaction.TransactionManager类未找到异常 问题原因
Infinispan 14虽完成Java EE到Jakarta EE的迁移,将所有javax API替换为Jakarta API,但部分场景下会因事务API依赖缺失或依赖版本不匹配,导致初始化配置类时找不到javax.transaction.TransactionManager类。
解决方案
方案1:适配Jakarta EE环境
若项目已迁移至Jakarta EE,直接引入Jakarta事务API依赖:
Maven配置
<dependency> <groupId>jakarta.transaction</groupId> <artifactId>jakarta.transaction-api</artifactId> <version>2.0.1</version> <!-- 适配Jakarta EE 9/10,与Infinispan 14兼容 --> </dependency> <!-- 确保Infinispan核心依赖版本正确 --> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-core</artifactId> <version>14.0.0.Dev03</version> </dependency>
Gradle配置
implementation 'jakarta.transaction:jakarta.transaction-api:2.0.1' implementation 'org.infinispan:infinispan-core:14.0.0.Dev03'
方案2:兼容旧Java EE环境
若项目需保留Java EE环境,引入传统javax事务API依赖:
Maven配置
<dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> <version>1.3</version> </dependency>
Gradle配置
implementation 'javax.transaction:javax.transaction-api:1.3'
方案3:排查依赖冲突
若上述方案无效,检查项目中是否存在javax与Jakarta事务API的依赖冲突:
- 用Maven的
mvn dependency:tree或Gradle的./gradlew dependencies命令查看依赖树 - 排除冲突依赖,确保仅保留一套事务API(全javax或全Jakarta)
额外说明
Infinispan 14默认优先使用Jakarta EE规范,若运行环境(如应用服务器)已提供事务API,可将依赖的scope设为provided,避免重复引入。
内容的提问来源于stack exchange,提问作者ChunChong
相关产品推荐
相关产品推荐

