我正在创建Quarkus扩展,我需要做的事情之一是使用AfterBeanDiscovery.addBean()的替换。
但是当Quarkus试图实例化bean时(在生成的代码中,所以不知道什么是null),我会得到一个NullPointerException。
这是精简的代码,但仍然有同样的问题。我用下面的BuildStep创建了一个处理器。
@BuildStep
SyntheticBeanBuildItem syntheticExample(BeanArchiveIndexBuildItem beanArchiveIndex) {
return SyntheticBeanBuildItem.configure(ExampleBean.class).scope(Singleton.class)
.creator(ExampleCreator.class)
.done();
}造物主只是
private static class ExampleCreator implements BeanCreator<ExampleBean> {
@Override
public ExampleBean create(CreationalContext<ExampleBean> creationalContext, Map<String, Object> map) {
return new ExampleBean("X");
}
}当我在JAX资源中使用ExampleBean时,当我试图访问该资源中的端点时,我会跟踪Stacktrace。
org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: Error injecting be.rubus.microstream.quarkus.integration.ExampleBean be.rubus.microstream.quarkus.GreetingResource.exampleBean
at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:368)
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:218)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:519)
...
Caused by: java.lang.RuntimeException: Error injecting be.rubus.microstream.quarkus.integration.ExampleBean be.rubus.microstream.quarkus.GreetingResource.exampleBean
at be.rubus.microstream.quarkus.GreetingResource_Bean.create(Unknown Source)
at be.rubus.microstream.quarkus.GreetingResource_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:111)
...
Caused by: java.lang.NullPointerException
at be.rubus.microstream.quarkus.integration.ExampleBean_f7ae08679933a92c66701907ce1ebba818ff26b3_Synthetic_Bean.get(Unknown Source)
at be.rubus.microstream.quarkus.integration.ExampleBean_f7ae08679933a92c66701907ce1ebba818ff26b3_Synthetic_Bean.get(Unknown Source)
... 34 more我遗漏了什么?
发布于 2022-08-25 15:30:39
Quarkus ARC小组提供了解决方案
范围来自谷歌果汁,而不是CDI。由于io.quarkus.arc.processor.BeanConfiguratorBase#scope(java.lang.Class<? extends java.lang.annotation.Annotation>)内部检查不足,无法正确报告问题
https://stackoverflow.com/questions/73293293
复制相似问题