flowable/flowable-engine · critical · FlowableException

problem retrieving flowable-registry-context.xml resources o

Error message

problem retrieving flowable-registry-context.xml resources on the classpath: 

What it means

EventRegistryEngines.init() also enumerates flowable-eventregistry-context.xml Spring-configuration resources to initialize the engine from Spring beans. An IOException from classLoader.getResources is wrapped in a FlowableException with the classpath appended. As with the cfg.xml case, this reflects a classpath I/O failure during engine bootstrap, not a missing resource.

Source

Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventRegistryEngines.java:79

            } catch (IOException e) {
                throw new FlowableException("problem retrieving flowable.registry.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 event registry engine using configuration '{}'", resource);
                initEventRegistryEngineFromResource(resource);
            }

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

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

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

    protected static void initEventRegistryEngineFromSpringResource(URL resource) {
        try {
            Class<?> springConfigurationHelperClass = ReflectUtil.loadClass("org.flowable.eventregistry.impl.spring.SpringEventRegistryConfigurationHelper");
            Method method = springConfigurationHelperClass.getDeclaredMethod("buildEventRegistryEngine", new Class<?>[] { URL.class });

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Validate all classpath entries listed in the message and fix or remove corrupt/unreadable ones.
  2. Re-deploy or rebuild the artifact to restore intact jars.
  3. If using a custom classloader, ensure getResources works for this resource name and protocol.
  4. Check Java security policy if a SecurityManager might block resource enumeration.

Example fix

// before
classpath contains truncated spring-context resource jar
// after
verify with: jar tf libs/app-spring.jar | grep flowable-eventregistry-context.xml
rebuild: mvn clean install
Defensive patterns

Strategy: try-catch

Validate before calling

URL res = getClass().getClassLoader().getResource("flowable-eventregistry-context.xml");
if (res == null) log.warn("No flowable-eventregistry-context.xml on classpath (Spring init will be skipped)");

Try / catch

try {
    EventRegistryEngines.getAppEngine();
} catch (FlowableException e) {
    if (e.getMessage().startsWith("problem retrieving flowable-registry-context.xml")) {
        log.error("Classpath I/O failure during Spring resource scan: " + e.getMessage(), e);
    }
    throw e;
}

Prevention

When it happens

Trigger: Engine initialization (EventRegistryEngines.init, reached via getAppEngine) when getResources('flowable-eventregistry-context.xml') throws IOException due to damaged classpath entries or failing classloaders.

Common situations: Spring integration setups where the context resource scan fails because of corrupt jars on the classpath, restricted security managers, or custom classloaders that throw on enumeration.

Related errors


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