Microshed与OpenLiberty Gradle集成测试依赖配置及类缺失问题
问题解决:Microshed + OpenLiberty 23.x 测试类加载异常(javax.annotation.Resource 找不到)
问题根源
- OpenLiberty 23.0.0.x 基于Jakarta EE 10/MicroProfile 6,所有Java EE API已从
javax.*命名空间迁移到jakarta.*,javax.annotation.Resource属于旧Java EE API,在OL 23.x中仅提供jakarta.annotation.Resource。 - 测试依赖混入了
javax.ws.rs-api这类旧javax.*包,与Jakarta EE 10 API冲突,导致类加载混乱。 - 使用的
microshed-testing-liberty:0.9.1版本未适配OpenLiberty 23.x,存在兼容性问题。
修正后的依赖配置
替换你的build.gradle依赖为以下内容:
dependencies { // MicroProfile 6 + Jakarta EE 10 API(保持providedCompile不变) providedCompile 'org.eclipse.microprofile:microprofile:6.0' providedCompile 'jakarta.platform:jakarta.jakartaee-api:10.0.0' // 基础测试框架 testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3' testImplementation 'org.testcontainers:testcontainers:1.18.3' // 升级到适配OpenLiberty 23.x的Microshed版本 testImplementation 'org.microshed:microshed-testing-liberty:0.10.0' // Jakarta EE 10 兼容的REST客户端依赖 testImplementation 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0' testImplementation 'org.jboss.resteasy:resteasy-client:6.2.4.Final' testImplementation 'org.jboss.resteasy:resteasy-json-binding-provider:6.2.4.Final' // Jakarta JSON Binding实现 testImplementation 'org.eclipse.yasson:yasson:3.0.3' // 日志依赖 testImplementation 'org.slf4j:slf4j-jdk14:2.0.7' // 新增Jakarta注解API,解决Resource类找不到问题 testImplementation 'jakarta.annotation:jakarta.annotation-api:2.1.1' }
关键调整说明
- 替换旧javax API:将
javax.ws.rs-api替换为jakarta.ws.rs-api:3.1.0,完全对齐Jakarta EE 10规范。 - 升级Microshed版本:
0.10.0版本已官方适配OpenLiberty 23.x,修复了版本兼容性问题。 - 补充Jakarta注解依赖:添加
jakarta.annotation-api确保测试类路径包含正确的jakarta.annotation.Resource类,同时需要检查你的应用代码,将所有javax.*注解替换为jakarta.*(比如@Resource→jakarta.annotation.Resource,@GET→jakarta.ws.rs.GET),这是Jakarta EE 10的强制要求。 - 清理冲突依赖:确保没有其他遗留的
javax.*API包混入依赖树,可通过gradle dependencies命令排查。
内容的提问来源于stack exchange,提问作者Rafael Soares - tuelho
相关产品推荐
相关产品推荐

