flowable/flowable-engine · error · FlowableException
problem retrieving flowable-idm-context.xml resources on the
Error message
problem retrieving flowable-idm-context.xml resources on the classpath: ${java.class.path} What it means
As the second step of IdmEngines.init(), the engine enumerates 'flowable-idm-context.xml' Spring context resources from the classpath. An IOException from ClassLoader.getResources is wrapped in this FlowableException including the java.class.path property. Same class as 3017 but for the Spring context descriptor rather than the main configuration file.
Source
Thrown at modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/IdmEngines.java:80
} catch (IOException e) {
throw new FlowableException("problem retrieving flowable.idm.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 idm engine using configuration '{}'", resource);
initIdmEngineFromResource(resource);
}
try {
resources = classLoader.getResources("flowable-idm-context.xml");
} catch (IOException e) {
throw new FlowableException("problem retrieving flowable-idm-context.xml resources on the classpath: " + System.getProperty("java.class.path"), e);
}
while (resources.hasMoreElements()) {
URL resource = resources.nextElement();
LOGGER.info("Initializing idm engine using Spring configuration '{}'", resource);
initIdmEngineFromSpringResource(resource);
}
setInitialized(true);
} else {
LOGGER.info("Idm engines already initialized");
}
}
protected static void initIdmEngineFromSpringResource(URL resource) {
try {
Class<?> springConfigurationHelperClass = ReflectUtil.loadClass("org.flowable.idm.spring.SpringIdmConfigurationHelper");
Method method = springConfigurationHelperClass.getDeclaredMethod("buildIdmEngine", new Class<?>[]{URL.class});View on GitHub (pinned to d6d39ce1c6)
Solutions
- Fix the classpath/classloader problem indicated by java.class.path in the message.
- Initialize the engine programmatically to avoid resource scanning.
- Check for a custom classloader override (e.g. OSGi, shaded fat jar) that mishandles getResources and repair or replace it.
Example fix
// before IdmEngines.init(); // scans flowable-idm-context.xml // after new IdmEngineConfiguration().buildIdmEngine(); // explicit construction, no scanning
Defensive patterns
Strategy: try-catch
Try / catch
try {
IdmEngines.init();
} catch (FlowableException e) {
if (e.getMessage().contains("flowable-idm-context.xml")) {
logger.error("Spring context resource scan failed", e.getCause());
}
} Prevention
- Test ClassLoader.getResources("flowable-idm-context.xml") in your target environment.
- Avoid custom classloaders that throw on getResources; prefer programmatic engine construction there.
When it happens
Trigger: ClassLoader.getResources("flowable-idm-context.xml") throwing IOException during engine bootstrap, after the idm.cfg.xml scan has already succeeded.
Common situations: Same environmental classloader problems as the cfg.xml scan: restricted app-server classloaders, corrupted classpath entries, custom classloader that throws on getResources.
Related errors
- problem retrieving flowable.idm.cfg.xml resources on the cla
- problem retrieving flowable-app-context.xml resources on the
- problem retrieving flowable-cmmn-context.xml resources on th
- problem retrieving flowable-dmn-context.xml resources on the
- problem retrieving flowable-registry-context.xml resources o
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/cfbe33318ee6184c.
Report an issue: GitHub.