{"record":{"id":"5d4595d11b8e52e3","repo":"flowable/flowable-engine","slug":"problem-retrieving-flowable-app-context-xml-resour","errorCode":null,"errorMessage":"problem retrieving flowable-app-context.xml resources on the classpath: <java.class.path>","messagePattern":"problem retrieving flowable-app-context\\.xml resources on the classpath: <java\\.class\\.path>","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-app-engine/src/main/java/org/flowable/app/engine/AppEngines.java","lineNumber":79,"sourceCode":"            } catch (IOException e) {\n                throw new FlowableException(\"problem retrieving flowable.app.cfg.xml resources on the classpath: \" + System.getProperty(\"java.class.path\"), e);\n            }\n\n            // Remove duplicated configuration URL's using set. Some\n            // classloaders may return identical URL's twice, causing duplicate startups\n            Set<URL> configUrls = new HashSet<>();\n            while (resources.hasMoreElements()) {\n                configUrls.add(resources.nextElement());\n            }\n            for (URL resource : configUrls) {\n                LOGGER.info(\"Initializing app engine using configuration '{}'\", resource);\n                initAppEngineFromResource(resource);\n            }\n\n            try {\n                resources = classLoader.getResources(\"flowable-app-context.xml\");\n            } catch (IOException e) {\n                throw new FlowableException(\"problem retrieving flowable-app-context.xml resources on the classpath: \" + System.getProperty(\"java.class.path\"), e);\n            }\n\n            while (resources.hasMoreElements()) {\n                URL resource = resources.nextElement();\n                LOGGER.info(\"Initializing app engine using Spring configuration '{}'\", resource);\n                initAppEngineFromSpringResource(resource);\n            }\n\n            setInitialized(true);\n        } else {\n            LOGGER.info(\"App engines already initialized\");\n        }\n    }\n\n    protected static void initAppEngineFromSpringResource(URL resource) {\n        try {\n            Class<?> springConfigurationHelperClass = ReflectUtil.loadClass(\"org.flowable.app.spring.SpringAppConfigurationHelper\");\n            Method method = springConfigurationHelperClass.getDeclaredMethod(\"buildAppEngine\", new Class<?>[] { URL.class });","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-app-engine/src/main/java/org/flowable/app/engine/AppEngines.java#L61-L97","documentation":"Same discovery mechanism as the cfg.xml lookup, but for Spring-style flowable-app-context.xml resources: AppEngines.init() calls ClassLoader.getResources(\"flowable-app-context.xml\") and wraps any IOException in this FlowableException with the java.class.path appended. A classpath scanning failure while initializing app engines from Spring resources.","triggerScenarios":"AppEngines.getAppEngine()/init() when enumerating flowable-app-context.xml resources via the classloader throws IOException.","commonSituations":"Application-server classloader quirks, broken classpath entries, or filesystem errors during resource enumeration when using Spring context auto-discovery of the app engine.","solutions":["Fix invalid entries reported in java.class.path in the message.","Inspect the wrapped IOException cause for the real failure.","Initialize the engine programmatically from a Spring configuration instead of relying on flowable-app-context.xml discovery.","Ensure the Spring context files are packaged and reachable by the application classloader."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(\"flowable-app-context.xml\");\nif (!urls.hasMoreElements()) { log.info(\"No spring app context resources found\"); }","typeGuard":null,"tryCatchPattern":"try { AppEngines.getAppEngine(); } catch (FlowableException e) {\n    log.error(\"Spring app-context discovery failed: \" + e.getMessage(), e);\n}","preventionTips":["Ensure flowable-app-context.xml is packaged in the jar","Use the container's standard classloading mechanisms","Fix broken classpath entries before startup","Consider programmatic engine init from the Spring ApplicationContext"],"tags":["classpath","engine-init","spring","resource-discovery"],"backgroundTag":"module-init-failed","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}