flowable/flowable-engine · error · FlowableIllegalArgumentException
No resource name provided
Error message
No resource name provided
What it means
FlowableIllegalArgumentException thrown by getAppDeploymentResource when the resource-name path variable is missing. The REST endpoint requires both a deployment id and a resource name; the library validates them upfront before querying the repository. It indicates a malformed request URL rather than a data problem.
Source
Thrown at modules/flowable-app-engine-rest/src/main/java/org/flowable/app/rest/service/api/repository/AppDeploymentResourceDataResource.java:68
@Autowired(required=false)
protected AppRestApiInterceptor restApiInterceptor;
@ApiOperation(value = "Get an app deployment resource content", tags = {"App Deployments" }, nickname = "getAppDeploymentResource",
notes = "The response body will contain the binary resource-content for the requested resource. The response content-type will be the same as the type returned in the resources mimeType property. Also, a content-disposition header is set, allowing browsers to download the file instead of displaying it.")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Indicates both app deployment and resource have been found and the resource data has been returned."),
@ApiResponse(code = 404, message = "Indicates the requested app deployment was not found or there is no resource with the given id present in the app deployment. The status-description contains additional information.") })
@GetMapping(value = "/app-repository/deployments/{deploymentId}/resourcedata/{resourceName}")
@ResponseBody
public byte[] getAppDeploymentResource(@ApiParam(name = "deploymentId") @PathVariable("deploymentId") String deploymentId,
@ApiParam(name = "resourceName") @PathVariable("resourceName") String resourceName,
HttpServletResponse response) {
if (deploymentId == null) {
throw new FlowableIllegalArgumentException("No deployment id provided");
}
if (resourceName == null) {
throw new FlowableIllegalArgumentException("No resource name provided");
}
// Check if deployment exists
AppDeployment deployment = appRepositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
if (deployment == null) {
throw new FlowableObjectNotFoundException("Could not find an app deployment with id '" + deploymentId);
}
if (restApiInterceptor != null) {
restApiInterceptor.accessDeploymentById(deployment);
}
List<String> resourceList = appRepositoryService.getDeploymentResourceNames(deploymentId);
if (resourceList.contains(resourceName)) {
response.setContentType("application/json");
try (final InputStream resourceStream = appRepositoryService.getResourceAsStream(deploymentId, resourceName)) {
return IOUtils.toByteArray(resourceStream);View on GitHub (pinned to d6d39ce1c6)
Solutions
- Include the resource name in the URL path after /resources/
- Verify the deployment actually contains the resource name (case-sensitive) via the deployments resources endpoint
- If calling the controller method directly, pass a non-null resourceName
Example fix
// before GET /app-repository/app-deployments/12345/resources/ // after GET /app-repository/app-deployments/12345/resources/my-app.app.zip
Defensive patterns
Strategy: validation
Validate before calling
if (deploymentId == null || deploymentId.isEmpty() || resourceName == null || resourceName.isEmpty()) {
throw new IllegalArgumentException("deploymentId and resourceName are required");
} Try / catch
try { byte[] data = /* REST call */; } catch (FlowableIllegalArgumentException e) { log.error("Missing path parameter: {}", e.getMessage()); } Prevention
- Always build URLs from templates so path variables cannot be empty
- Validate path variables before issuing the request
- Log the full request URL when debugging REST calls
When it happens
Trigger: GET /app-repository/app-deployments/{deploymentId}/resources/ with an empty or absent resource name, or a programmatic call to AppDeploymentResourceDataResource.getAppDeploymentResource passing resourceName=null.
Common situations: Truncated URLs, MVC path-variable misconfiguration, template variables not expanded when building the request in code or tooling.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Error converting resource stream
- Could not find a resource with id '<resourceName>' in deploy
- <e.getMessage()>
- Could not find an app deployment with id '<deploymentId>
- Could not find an app deployment with id '<deploymentId>
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/d995c2b18d349dda.
Report an issue: GitHub.