是否可以使用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 测试,但总是出现上述异常。
我通过定义测试的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 了解更多详细信息。