flowable/flowable-engine · error · FlowableException
invalid url
Error message
invalid url: <resourceUrl>
What it means
AppEngines.retry(resourceUrl) re-initializes an engine from a previously discovered resource URL string. If the string cannot be parsed into a java.net.URL (MalformedURLException), retry throws this FlowableException. It indicates the resourceUrl argument is not a valid URL.
Solutions
- Pass exactly the value returned by EngineInfo.getResourceUrl(), not a file path or engine name.
- Ensure the string is absolute and includes a scheme (file:, jar:, etc.).
- Prepend "file:" if you have a plain absolute filesystem path you intend to use as a URL.
- Get the list of valid URLs from AppEngines.getAppEngineInfos() and retry one of those.
Example fix
// before
AppEngines.retry("flowable.app.cfg.xml");
// after
AppEngines.retry(info.getResourceUrl()); // e.g. "file:/app/config/flowable.app.cfg.xml" Defensive patterns
Strategy: validation
Validate before calling
private static boolean isValidUrl(String s) {
try { new URL(s); return true; } catch (MalformedURLException e) { return false; }
}
// call: if (isValidUrl(resourceUrl)) AppEngines.retry(resourceUrl); Type guard
static boolean isAbsoluteUrl(String s) { return s != null && s.matches("^[a-zA-Z][a-zA-Z0-9+.-]*:.*"); } Try / catch
try { AppEngines.retry(resourceUrl); } catch (FlowableException e) {
log.error("Not a valid URL: " + resourceUrl, e);
} Prevention
- Always pass EngineInfo.getResourceUrl() values
- Never store engine info URLs without their scheme
- Use getAppEngineInfos() to enumerate valid retry targets
When it happens
Trigger: Calling AppEngines.retry("some-string") where the string is not an absolute, well-formed URL (e.g. a plain file path, empty string, or a resource name instead of the URL stored in EngineInfo.getResourceUrl()).
Common situations: Passing an engine name or file path instead of the URL from EngineInfo;手工 editing stored URLs; losing the URL scheme (file:/jar:) when persisting engine info.
Understand the failure class
Background: "Invalid URL" errors: why new URL(), URI.parse, and reqwest::Url reject your string — missing scheme, whitespace, and bad path format — this error's family across 39 libraries.
Related errors
- invalid url
- A process instance id is required, but the provided id '" +…
- A process instance id is required, but the provided id
- A process instance id is required, but the provided id
- Could not find case element with id
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/53398534a87f68ad.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-app-engine/src/main/java/org/flowable/app/engine/AppEngines.java:204
* @param appEngineName
* is the name of the app engine or null for the default app engine.
*/
public static AppEngine getAppEngine(String appEngineName) {
if (!isInitialized()) {
init();
}
return appEngines.get(appEngineName);
}
/**
* retries to initialize an app engine that previously failed.
*/
public static EngineInfo retry(String resourceUrl) {
LOGGER.debug("retying initializing of resource {}", resourceUrl);
try {
return initAppEngineFromResource(new URL(resourceUrl));
} catch (MalformedURLException e) {
throw new FlowableException("invalid url: " + resourceUrl, e);
}
}
/**
* provides access to app engine to application clients in a managed server environment.
*/
public static Map<String, AppEngine> getAppEngines() {
return appEngines;
}
/**
* closes all app engines. This method should be called when the server shuts down.
*/
public static synchronized void destroy() {
if (isInitialized()) {
Map<String, AppEngine> engines = new HashMap<>(appEngines);
appEngines = new HashMap<>();
View on GitHub (pinned to d6d39ce1c6)