quarkusio/quarkus · error · IllegalStateException
No bean type found for: ${bean}
Error message
No bean type found for: ${bean} What it means
During ComponentsProvider generation, each bean must map to a generated bean class name (beanToGeneratedName). If a bean in a group has no entry — meaning no bean type class was generated for it — code generation cannot emit the addBean call and fails fast with IllegalStateException. This is an internal generator invariant, typically indicating a bug or inconsistent state upstream.
Source
Thrown at independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ComponentsProviderGenerator.java:297
private void generateAddBeans(String generatedName, Gizmo gizmo, CodeGenInfo info,
Map<BeanInfo, String> beanToGeneratedName) {
Set<BeanInfo> processed = new HashSet<>();
for (Container<BeanGroup> container : info.beans()) {
gizmo.class_(container.className(generatedName, ADD_BEANS), cc -> {
cc.final_();
for (BeanGroup group : container) {
cc.staticMethod(ADD_BEANS + group.id(), mc -> {
mc.packagePrivate();
mc.returning(void.class);
ParamVar beanIdToBean = mc.parameter("beanIdToBean", Map.class);
mc.body(bc -> {
for (BeanInfo bean : group.beans()) {
ClassDesc beanType = beanToGeneratedName.containsKey(bean)
? ClassDesc.of(beanToGeneratedName.get(bean))
: null;
if (beanType == null) {
throw new IllegalStateException("No bean type found for: " + bean);
}
List<InjectionPointInfo> injectionPoints = bean.getInjections()
.stream()
.flatMap(i -> i.injectionPoints.stream())
.filter(ip -> !ip.isDelegate() && !BuiltinBean.resolvesTo(ip))
.toList();
List<ClassDesc> params = new ArrayList<>();
List<Expr> args = new ArrayList<>();
if (bean.isProducer()) {
params.add(ClassDesc.of(Supplier.class.getName()));
if (processed.contains(bean.getDeclaringBean())) {
args.add(bc.withMap(beanIdToBean)
.get(Const.of(bean.getDeclaringBean().getIdentifier())));
} else {
// Declaring bean was not processed yet - use MapValueSupplier
args.add(bc.new_(MethodDescs.MAP_VALUE_SUPPLIER_CONSTRUCTOR, beanIdToBean,View on GitHub (pinned to e1c734241f)
Solutions
- Clean rebuild (mvn clean install) to regenerate ArC components and clear stale state
- Check the extension registering the bean ensures it contributes a proper bean type/generated class
- Report/inspect as a possible ArC bug if reproducible on a minimal project; try a different Quarkus version
Example fix
null
Defensive patterns
Strategy: try-catch
Try / catch
try {
quarkusBuild.start();
} catch (IllegalStateException e) {
if (e.getMessage() != null && e.getMessage().startsWith("No bean type found for:")) {
logger.errorf("Clean rebuild or report ArC bug: %s", e.getMessage());
}
throw e;
} Prevention
- Do a clean build after upgrading Quarkus
- Avoid unsupported hacks when registering synthetic beans
- Reproduce on minimal project and file an ArC issue if persistent
When it happens
Trigger: generateAddBeans iterates group.beans() and calls beanToGeneratedName.containsKey(bean); a bean is absent from the map so beanType is null and the IllegalStateException is thrown.
Common situations: Custom extensions registering synthetic beans in unusual ways that skip bean-type generation; ArC processor bugs after Quarkus upgrades; build caches holding stale generated metadata after refactors.
Related errors
- No observer type found for: ${observerType}
- AnnotationTransformation is not an AnnotationsTransformer: <
- Invalid configuration value set for 'quarkus.arc.remove-unus
- Different default scopes defined for additional bean class:
- Unexpected value: <arcConfig.optimizeContexts()>
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/7ab30cf48fbedc86.
Report an issue: GitHub.