flowable/flowable-engine · error · FlowableException

problem retrieving flowable-dmn-context.xml resources on the

Error message

problem retrieving flowable-dmn-context.xml resources on the classpath: " + System.getProperty("java.class.path")

What it means

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.

Source

Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/DmnEngines.java:81

                throw new FlowableException("problem retrieving flowable.dmn.cfg.xml resources on the classpath: " + System.getProperty("java.class.path"), e);
            }

            // Remove duplicated configuration URL's using set. Some
            // classloaders may return identical URL's twice, causing duplicate startups
            Set<URL> configUrls = new HashSet<>();
            while (resources.hasMoreElements()) {
                configUrls.add(resources.nextElement());
            }
            for (Iterator<URL> iterator = configUrls.iterator(); iterator.hasNext();) {
                URL resource = iterator.next();
                LOGGER.info("Initializing dmn engine using configuration '{}'", resource);
                initDmnEngineFromResource(resource);
            }

            try {
                resources = classLoader.getResources("flowable-dmn-context.xml");
            } catch (IOException e) {
                throw new FlowableException("problem retrieving flowable-dmn-context.xml resources on the classpath: " + System.getProperty("java.class.path"), e);
            }

            while (resources.hasMoreElements()) {
                URL resource = resources.nextElement();
                LOGGER.info("Initializing dmn engine using Spring configuration '{}'", resource);
                initDmnEngineFromSpringResource(resource);
            }

            setInitialized(true);
        } else {
            LOGGER.info("DMN engines already initialized");
        }
    }

    protected static void initDmnEngineFromSpringResource(URL resource) {
        try {
            Class<?> springConfigurationHelperClass = ReflectUtil.loadClass("org.flowable.dmn.spring.SpringDmnConfigurationHelper");
            Method method = springConfigurationHelperClass.getDeclaredMethod("buildDmnEngine", new Class<?>[] { URL.class });

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Inspect the IOException cause to identify the failing classpath entry.
  2. Validate all entries in the reported java.class.path are accessible and not corrupted jars.
  3. Correct container/custom classloader configuration and re-init.

Example fix

// before: jar listed on classpath but deleted at runtime
classpath: /apps/lib/flowable-dmn.jar (missing on disk)
// after
redeploy missing jar so classpath entries all resolve
Defensive patterns

Strategy: try-catch

Validate before calling

Enumeration<URL> ctx = DmnEngines.class.getClassLoader().getResources("flowable-dmn-context.xml");
// if this throws IOException, the engine init will fail the same way

Try / catch

try { DmnEngine engine = DmnEngines.getDmnEngine(); } catch (FlowableException e) {
    if (e.getMessage().startsWith("problem retrieving flowable-dmn-context.xml")) { /* fix classloader/classpath */ }
    throw e;
}

Prevention

When it happens

Trigger: DmnEngines.init() (via getDmnEngine) when classLoader.getResources("flowable-dmn-context.xml") throws IOException.

Common situations: Same classloader/environment failures as the cfg.xml scan: broken classpath entries, container classloader issues, custom resource-loading failures.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/a745afc347c134e7. Report an issue: GitHub.