weld-junit5 与 Java 17

问题描述 投票:0回答:1

是否可以使用Java 17运行weld-junit5? 我们正在使用 Wildfly 26 和 Java 17。

当我运行单元测试时,出现异常:

org.jboss.weld.exceptions.WeldException: WELD-001524: Unable to load proxy class for bean Managed Bean [class de.XXX] with qualifiers [@Any @Default] with class class de.XXX using classloader jdk.internal.loader.ClassLoaders$AppClassLoader@2aae9190
...
    at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:370)
Caused by: java.lang.ExceptionInInitializerError
    at org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:469)
    at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:362)
    ... 68 more
Caused by: java.lang.RuntimeException: cannot initialize ClassPool
    at org.jboss.weld.util.bytecode.ClassFileUtils.<clinit>(ClassFileUtils.java:71)
    ... 70 more
Caused by: java.lang.NoSuchFieldException: override
    at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
    at org.jboss.weld.util.bytecode.ClassFileUtils$1.run(ClassFileUtils.java:59)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at org.jboss.weld.util.bytecode.ClassFileUtils.<clinit>(ClassFileUtils.java:48)
    ... 70 more

我尝试在版本 2.0.2、3.0.0.Final 和 4.0.0.Final 中使用weld-junit5 运行 JUnit 测试,但总是出现上述异常。

wildfly cdi java-17 jboss-weld weld-junit5
1个回答
0
投票

我通过定义测试的weld-se-core 库解决了这个问题:

<dependency>
    <groupId>org.jboss.weld.se</groupId>
    <artifactId>weld-se-core</artifactId>
    <version>3.1.9.Final</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-junit5</artifactId>
    <version>2.0.2.Final</version>
    <scope>test</scope>
</dependency>

不,它正在使用 Java 17 运行! 另请参阅 https://github.com/weld/weld-testing/issues/157 了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.