flowable/flowable-engine · error · FlowableException

problem retrieving flowable-cmmn-context.xml resources on th

Error message

problem retrieving flowable-cmmn-context.xml resources on the classpath: {java.class.path}

What it means

Thrown by CmmnEngines.init when enumerating flowable-cmmn-context.xml Spring configuration resources on the classpath fails with an IOException. The engine cannot complete auto-discovery of Spring-based configurations.

Source

Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/CmmnEngines.java:79

            } catch (IOException e) {
                throw new FlowableException("problem retrieving flowable.cmmn.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 (URL resource : configUrls) {
                LOGGER.info("Initializing cmmn engine using configuration '{}'", resource);
                initCmmnEngineFromResource(resource);
            }

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

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

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

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

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Check java.class.path entries for unreadable/corrupt artifacts and redeploy
  2. Remove unused flowable-cmmn-context.xml files or the broken jars causing the scan to fail
  3. Initialize the CMMN engine programmatically or via an explicit Spring bean instead of classpath auto-discovery
  4. Verify with a minimal test that CmmnEngines.class.getClassLoader().getResources("flowable-cmmn-context.xml") works in the target environment

Example fix

// before
CmmnEngines.init(); // fails scanning flowable-cmmn-context.xml

// after
ClassPathXmlApplicationContext ctx =
    new ClassPathXmlApplicationContext("flowable-cmmn-context.xml");
CmmnEngine engine = ctx.getBean(CmmnEngine.class);
Defensive patterns

Strategy: try-catch

Try / catch

try {
    CmmnEngines.init();
} catch (FlowableException e) {
    if (e.getMessage().contains("problem retrieving flowable-cmmn-context.xml")) {
        // initialize via explicit Spring context or programmatic config instead
    } else { throw e; }
}

Prevention

When it happens

Trigger: classLoader.getResources("flowable-cmmn-context.xml") throws IOException during engine init — caused by unreadable classpath entries, broken jars, or failing classloaders; the IOException is wrapped in the FlowableException.

Common situations: App-server classloader issues when scanning Spring context XMLs; corrupt deployment artifacts; restrictive container/filesystem permissions making jars unreadable at runtime.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


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