quarkusio/quarkus · error · IllegalStateException
Synthetic bean has ExtendedBeanConfigurator#checkActive(), b
Error message
Synthetic bean has ExtendedBeanConfigurator#checkActive(), but does not have ExtendedBeanConfigurator#supplier() / createWith() / runtimeValue() / runtimeProxy()
What it means
When ExtendedBeanConfigurator#checkActive() is set, done() requires that the bean's creation also be configured through a recorder proxy (supplier/createWith/runtimeValue/runtimeProxy). checkActive alone cannot produce an instance, so done() throws this IllegalStateException to enforce a consistent configuration.
Source
Thrown at extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/SyntheticBeanBuildItem.java:154
ExtendedBeanConfigurator(DotName implClazz) {
super(implClazz);
this.staticInit = true;
}
/**
* Finish the configurator.
*
* @return a new build item
*/
public SyntheticBeanBuildItem done() {
if (supplier == null && runtimeValue == null && fun == null && runtimeProxy == null && creatorConsumer == null) {
throw new IllegalStateException(
"Synthetic bean does not provide a creation method, use ExtendedBeanConfigurator#creator(), ExtendedBeanConfigurator#supplier(), ExtendedBeanConfigurator#createWith() or ExtendedBeanConfigurator#runtimeValue()");
}
if (checkActive != null && supplier == null && runtimeValue == null && fun == null && runtimeProxy == null) {
// "check active" procedure is set via recorder proxy,
// creation function must also be set via recorder proxy
throw new IllegalStateException(
"Synthetic bean has ExtendedBeanConfigurator#checkActive(), but does not have ExtendedBeanConfigurator#supplier() / createWith() / runtimeValue() / runtimeProxy()");
}
return new SyntheticBeanBuildItem(this);
}
/**
* The contextual bean instance is supplied by a proxy returned from a recorder method.
* <p>
* Use {@link #createWith(Function)} if you want to leverage build-time parameters or synthetic injection points.
*
* @param supplier A supplier returned from a recorder method
* @return self
* @throws IllegalArgumentException If the supplier argument is not a proxy returned from a recorder method
*/
public ExtendedBeanConfigurator supplier(Supplier<?> supplier) {
checkReturnedProxy(supplier);
checkMultipleCreationMethods();
this.supplier = Objects.requireNonNull(supplier);View on GitHub (pinned to e1c734241f)
Solutions
- Replace .creator(...)/.createWith(lambda) with a recorder-proxy based creation: .supplier(recorder.xxx()) or .createWith(recorder.xxx()) or .runtimeValue(recorder.xxx())
- Or remove checkActive() if it is not required
- Keep both the checkActive proxy and creation proxy from the same recorder invocation pattern
- See SyntheticBeanBuildItem javadoc: checkActive requires proxy-based creation
Example fix
// before configure(Foo.class).scope(Singleton.class).creator(ctx -> new Foo()).checkActive(recorder.isActive()).done(); // after configure(Foo.class).scope(Singleton.class).supplier(recorder.fooSupplier()).checkActive(recorder.isActive()).done();
Defensive patterns
Strategy: validation
Validate before calling
// If using .checkActive(recorder.check()), creation must also be a recorder proxy: // .supplier(recorder.create()) — not .creator(ctx -> ...) and not omitted
Prevention
- Pair checkActive() only with supplier/createWith/runtimeValue/runtimeProxy
- Migrate creator lambdas to recorder suppliers when adding checkActive
- Review SyntheticBeanBuildItem javadoc before use
When it happens
Trigger: Calling .checkActive(recorder.someCheck()) on SyntheticBeanBuildItem.configure(...) but then relying on creator()/fun (non-proxy creation) or omitting creation entirely, then calling done().
Common situations: Extension authors adding an active-check to an existing synthetic bean whose creation is via a plain creator lambda instead of a recorder proxy; partial migration of old bean registrations to the checkActive API.
Related errors
- Synthetic bean does not provide a creation method, use Exten
- It is not possible to specify multiple creation methods
- The object is not a proxy returned from a recorder method: <
- Invalid annotation target: <target>
- The @Blocking, @NonBlocking and @RunOnVirtualThread annotati
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/2b10df90a312ccd5.
Report an issue: GitHub.