{"record":{"id":"a745afc347c134e7","repo":"flowable/flowable-engine","slug":"problem-retrieving-flowable-dmn-context-xml-resour","errorCode":null,"errorMessage":"problem retrieving flowable-dmn-context.xml resources on the classpath: \" + System.getProperty(\"java.class.path\")","messagePattern":"problem retrieving flowable-dmn-context\\.xml resources on the classpath: \" \\+ System\\.getProperty\\(\"java\\.class\\.path\"\\)","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/DmnEngines.java","lineNumber":81,"sourceCode":"                throw new FlowableException(\"problem retrieving flowable.dmn.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 (Iterator<URL> iterator = configUrls.iterator(); iterator.hasNext();) {\n                URL resource = iterator.next();\n                LOGGER.info(\"Initializing dmn engine using configuration '{}'\", resource);\n                initDmnEngineFromResource(resource);\n            }\n\n            try {\n                resources = classLoader.getResources(\"flowable-dmn-context.xml\");\n            } catch (IOException e) {\n                throw new FlowableException(\"problem retrieving flowable-dmn-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 dmn engine using Spring configuration '{}'\", resource);\n                initDmnEngineFromSpringResource(resource);\n            }\n\n            setInitialized(true);\n        } else {\n            LOGGER.info(\"DMN engines already initialized\");\n        }\n    }\n\n    protected static void initDmnEngineFromSpringResource(URL resource) {\n        try {\n            Class<?> springConfigurationHelperClass = ReflectUtil.loadClass(\"org.flowable.dmn.spring.SpringDmnConfigurationHelper\");\n            Method method = springConfigurationHelperClass.getDeclaredMethod(\"buildDmnEngine\", new Class<?>[] { URL.class });","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/DmnEngines.java#L63-L99","documentation":"DmnEngines.init(), after handling flowable.dmn.cfg.xml, also scans for Spring-based configuration files (flowable-dmn-context.xml). An IOException while enumerating those resources is wrapped in this FlowableException with the classpath appended. Engine bootstrap cannot continue.","triggerScenarios":"DmnEngines.init() (via getDmnEngine) when classLoader.getResources(\"flowable-dmn-context.xml\") throws IOException.","commonSituations":"Same classloader/environment failures as the cfg.xml scan: broken classpath entries, container classloader issues, custom resource-loading failures.","solutions":["Inspect the IOException cause to identify the failing classpath entry.","Validate all entries in the reported java.class.path are accessible and not corrupted jars.","Correct container/custom classloader configuration and re-init."],"exampleFix":"// before: jar listed on classpath but deleted at runtime\nclasspath: /apps/lib/flowable-dmn.jar (missing on disk)\n// after\nredeploy missing jar so classpath entries all resolve","handlingStrategy":"try-catch","validationCode":"Enumeration<URL> ctx = DmnEngines.class.getClassLoader().getResources(\"flowable-dmn-context.xml\");\n// if this throws IOException, the engine init will fail the same way","typeGuard":null,"tryCatchPattern":"try { DmnEngine engine = DmnEngines.getDmnEngine(); } catch (FlowableException e) {\n    if (e.getMessage().startsWith(\"problem retrieving flowable-dmn-context.xml\")) { /* fix classloader/classpath */ }\n    throw e;\n}","preventionTips":["Verify classpath integrity before engine bootstrap","Repair broken jars/directories reported in java.class.path","Restart containers with corrupted classloaders"],"tags":["dmn","classpath","io","spring","engine-bootstrap"],"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"}