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

能否在Java 17环境下运行weld-junit5?WildFly 26测试遇异常

问题解决:Java17 + WildFly26 运行weld-junit5 出现代理类加载异常

异常根源

你遇到的WELD-001524异常,核心原因是Java 9+ 移除了java.lang.Class中的override字段,而你尝试的weld-junit5版本(2.0.2、3.0.0.Final、4.0.0.Final)依赖的Weld字节码工具仍在通过反射获取这个已不存在的字段,导致ClassPool初始化失败,最终无法生成代理类。

解决方案

1. 使用适配Java17的weld-junit5版本

WildFly26集成的是Weld 4.0.x,因此需要使用weld-junit5 4.0.1.Final及以上版本——该版本已修复Java17下的反射字段兼容问题。

Maven依赖配置示例:

<dependency>
    <groupId>org.jboss.weld.junit5</groupId>
    <artifactId>weld-junit5</artifactId>
    <version>4.0.1.Final</version>
    <scope>test</scope>
</dependency>

2. 排除冲突依赖

如果项目中存在旧版Weld核心、字节码工具等依赖,需手动排除,避免与WildFly自带或weld-junit5的依赖冲突。比如:

<dependency>
    <groupId>org.jboss.weld.junit5</groupId>
    <artifactId>weld-junit5</artifactId>
    <version>4.0.1.Final</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-core-impl</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 检查测试类配置

确保测试类使用正确的weld-junit5注解:

  • 用@EnableWeld开启Weld容器支持
  • 用@AddBeanClasses或@AddPackages指定需要扫描的Bean类/包

示例测试类:

import org.jboss.weld.junit5.EnableWeld;
import org.jboss.weld.junit5.AddBeanClasses;
import org.junit.jupiter.api.Test;

@EnableWeld
@AddBeanClasses(YourBeanClass.class)
public class YourTest {
    // 测试逻辑
}

结论

WildFly26搭配Java17完全可以运行weld-junit5,只需使用适配的版本并处理好依赖冲突即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:32:21