quarkusio/quarkus · error · IllegalStateException
Dev UI problem: monitoring of CDI business method invocation
Error message
Dev UI problem: monitoring of CDI business method invocations not possible - quarkus.arc.transform-unproxyable-classes was set to false and therefore it would not be possible to apply interceptors to unproxyable bean classes - please disable the monitoring feature via quarkus.arc.dev-mode.monitoring-enabled=false or enable unproxyable classes transformation
What it means
The Arc Dev UI monitoring feature intercepts CDI business method invocations, which requires bean classes to be proxied/transformed. If quarkus.arc.transform-unproxyable-classes=false, unproxyable bean classes cannot get the monitoring interceptor applied, so registerMonitoringComponents() fails the build with instructions to either disable monitoring or re-enable transformation.
Source
Thrown at extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/devui/ArcDevUIProcessor.java:121
}
return pageBuildItem;
}
@BuildStep(onlyIf = IsLocalDevelopment.class)
JsonRPCProvidersBuildItem createJsonRPCService() {
return new JsonRPCProvidersBuildItem(ArcJsonRPCService.class);
}
@BuildStep(onlyIf = IsLocalDevelopment.class)
void registerMonitoringComponents(ArcConfig config, BuildProducer<AdditionalBeanBuildItem> beans,
BuildProducer<AnnotationsTransformerBuildItem> annotationTransformers,
CustomScopeAnnotationsBuildItem customScopes, List<BeanDefiningAnnotationBuildItem> beanDefiningAnnotations) {
if (!config.devMode().monitoringEnabled()) {
return;
}
if (!config.transformUnproxyableClasses()) {
throw new IllegalStateException(
"Dev UI problem: monitoring of CDI business method invocations not possible\n\t- quarkus.arc.transform-unproxyable-classes was set to false and therefore it would not be possible to apply interceptors to unproxyable bean classes\n\t- please disable the monitoring feature via quarkus.arc.dev-mode.monitoring-enabled=false or enable unproxyable classes transformation");
}
// Register beans
beans.produce(AdditionalBeanBuildItem.builder().setUnremovable()
.addBeanClasses(EventsMonitor.class, InvocationTree.class, InvocationsMonitor.class,
InvocationInterceptor.class,
Monitored.class)
.build());
// Add @Monitored to all beans
Set<DotName> skipNames = Set.of(DotName.createSimple(InvocationTree.class),
DotName.createSimple(InvocationsMonitor.class), DotName.createSimple(EventsMonitor.class));
annotationTransformers.produce(new AnnotationsTransformerBuildItem(AnnotationsTransformer
.appliedToClass()
.whenClass(c -> (customScopes.isScopeDeclaredOn(c)
|| isAdditionalBeanDefiningAnnotationOn(c, beanDefiningAnnotations))
&& !skipClass(c, skipNames))
.thenTransform(t -> t.add(Monitored.class))));View on GitHub (pinned to e1c734241f)
Solutions
- Set quarkus.arc.transform-unproxyable-classes=true (remove the explicit false)
- Or set quarkus.arc.dev-mode.monitoring-enabled=false to disable monitoring
- Keep both properties consistent in application.properties / profiles
- Review why transformation was disabled — re-enabling may fix hidden interceptor issues too
Example fix
# before quarkus.arc.transform-unproxyable-classes=false # after (option A) quarkus.arc.transform-unproxyable-classes=true # after (option B) quarkus.arc.dev-mode.monitoring-enabled=false
Defensive patterns
Strategy: validation
Validate before calling
// application.properties check: // NOT both: quarkus.arc.dev-mode.monitoring-enabled=true AND quarkus.arc.transform-unproxyable-classes=false
Prevention
- Keep monitoring-enabled and transform-unproxyable-classes consistent
- Document why transform-unproxyable-classes is disabled in your project
- Re-check these flags after Quarkus upgrades
When it happens
Trigger: Setting quarkus.arc.dev-mode.monitoring-enabled=true (default) together with quarkus.arc.transform-unproxyable-classes=false in application.properties.
Common situations: Projects that disabled unproxyable-class transformation for build speed or legacy compatibility, then enabled Dev UI invocation monitoring; defaults colliding after an upgrade.
Related errors
- Unexpected value: <config.devMode().generateDependencyGraphs
- Invalid annotation target: <target>
- The @Blocking, @NonBlocking and @RunOnVirtualThread annotati
- Multiple @Inject constructors on ${theClass}
- The 'stream' parameter cannot be combined with 'platformGrou
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/d0b68bc9816735e3.
Report an issue: GitHub.