aldettinger opened a new issue #1605: URL: https://github.com/apache/camel-quarkus/issues/1605
A camel-quarkus user could face a `ClassNotFoundException` when using `onException` in native mode, for instance the following route : ``` onException(MyException.class).handled(true); from("direct:onException").throwException(new MyException()); ``` Could produce a stack trace similar as below: ``` 2020-08-25 11:02:49,859 ERROR [io.qua.application] (main) Failed to start application (with profile prod): java.lang.RuntimeException: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> ThrowException[org.apache.camel.quarkus.core.CoreRoutes.MyException] <<< in route: Route(route1)[From[direct:onException] -> [OnException[[org.... because of java.lang.ClassNotFoundException: org.apache.camel.quarkus.core.CoreRoutes$MyException at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:47) at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy_0(CamelBootstrapProcessor$boot-173480958.zig:101) at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy(CamelBootstrapProcessor$boot-173480958.zig:40) at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:642) at io.quarkus.runtime.Application.start(Application.java:90) at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:92) at io.quarkus.runtime.Quarkus.run(Quarkus.java:61) at io.quarkus.runtime.Quarkus.run(Quarkus.java:38) at io.quarkus.runtime.Quarkus.run(Quarkus.java:106) at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29) Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> ThrowException[org.apache.camel.quarkus.core.CoreRoutes.MyException] <<< in route: Route(route1)[From[direct:onException] -> [OnException[[org.... because of java.lang.ClassNotFoundException: org.apache.camel.quarkus.core.CoreRoutes$MyException at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:393) at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:117) at org.apache.camel.quarkus.core.FastCamelContext.startRouteDefinitions(FastCamelContext.java:688) at org.apache.camel.quarkus.core.FastCamelContext.startRouteDefinitions(FastCamelContext.java:480) at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2612) at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:366) at org.apache.camel.support.service.BaseService.init(BaseService.java:83) at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2435) at org.apache.camel.support.service.BaseService.start(BaseService.java:111) at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2452) at org.apache.camel.quarkus.core.CamelContextRuntime.start(CamelContextRuntime.java:57) at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45) ... 9 more Caused by: org.apache.camel.RuntimeCamelException: java.lang.ClassNotFoundException: org.apache.camel.quarkus.core.CoreRoutes$MyException at org.apache.camel.reifier.errorhandler.ErrorHandlerReifier.createExceptionClasses(ErrorHandlerReifier.java:280) at org.apache.camel.reifier.errorhandler.ErrorHandlerReifier.addExceptionPolicy(ErrorHandlerReifier.java:257) at org.apache.camel.reifier.errorhandler.ErrorHandlerReifier.configure(ErrorHandlerReifier.java:300) at org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier.createErrorHandler(DefaultErrorHandlerReifier.java:47) at org.apache.camel.reifier.errorhandler.ErrorHandlerRefReifier.createErrorHandler(ErrorHandlerRefReifier.java:34) at org.apache.camel.reifier.ProcessorReifier.wrapInErrorHandler(ProcessorReifier.java:674) at org.apache.camel.reifier.ProcessorReifier.wrapChannelInErrorHandler(ProcessorReifier.java:654) at org.apache.camel.reifier.ProcessorReifier.wrapChannel(ProcessorReifier.java:633) at org.apache.camel.reifier.ProcessorReifier.wrapChannel(ProcessorReifier.java:544) at org.apache.camel.reifier.ProcessorReifier.wrapProcessor(ProcessorReifier.java:540) at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:782) at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:511) at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:391) ... 20 more Caused by: java.lang.ClassNotFoundException: org.apache.camel.quarkus.core.CoreRoutes$MyException at org.apache.camel.impl.engine.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:96) at org.apache.camel.reifier.errorhandler.ErrorHandlerReifier.createExceptionClasses(ErrorHandlerReifier.java:277) ... 32 more ``` I can't see any way to avoid loading the exception class during camel `onException` handling. I don't think we could register exception classes as reflective from an extension without access to route definitions at build time. So, at this stage, I'm thinking about documenting that when using `onException(xxExceptionClass)`, then it's user's responsibility to register `xxExceptionClass` for reflection. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org