自定义Quarkus扩展中@Recorder类被代理导致IntelliJ测试失败的排查与解决咨询
Quarkus扩展中@Recorder类被代理导致IntelliJ测试失败的排查与解决咨询
我在IntelliJ中使用Kotlin运行测试时遇到了问题:我的@Recorder类没有被quarkus-core-deployment识别为@Recorder。调试时我发现这个Recorder是一个Proxy对象。
为什么会出现这种情况?Quarkus什么时候会创建代理对象?有没有办法针对某个类禁用代理?

这个问题在命令行运行时不会出现。问题出在quarkus-core-development中的这段代码,它无法处理Proxy类:
@SuppressWarnings("deprecation") private static boolean isRecorder(AnnotatedElement element) { return element.isAnnotationPresent(Recorder.class); }
我希望能在IntelliJ中顺利运行测试,而不出现如下的堆栈错误:
Failed to load steps from class [hidden] java.lang.RuntimeException: Failed to load steps from class [hidden] at io.quarkus.deployment.ExtensionLoader.loadStepsFrom(ExtensionLoader.java:169) at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:107) at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:350) at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:272) at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:62) at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:219) at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:601) at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:651) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.RuntimeException: public void [hidden],[hidden].BeanContainerBuildItem,[hidden]) is marked @Record but does not inject an @Recorder object at io.quarkus.deployment.ExtensionLoader.loadStepsFromClass(ExtensionLoader.java:467) at io.quarkus.deployment.ExtensionLoader.loadStepsFrom(ExtensionLoader.java:167) ... 8 more
备注:内容来源于stack exchange,提问作者Martin Langvatn
相关产品推荐
相关产品推荐

