quarkusio/quarkus · error · MojoExecutionException
Unable to write quarkus native image agent caller filter to
Error message
Unable to write quarkus native image agent caller filter to <path>
What it means
GenerateCodeTestsMojo.generateNativeAgentFilter writes a JSON caller-filter file used by the Quarkus native image agent. If BufferedWriter/appendTo throws IOException it wraps it in this MojoExecutionException naming the target path. The failure is purely about persisting the generated filter file to disk.
Source
Thrown at devtools/maven/src/main/java/io/quarkus/maven/GenerateCodeTestsMojo.java:104
}
private void generateNativeAgentFilter(Collection<String> packageNames, Path path) throws MojoExecutionException {
final Json.JsonObjectBuilder result = Json.object();
final Json.JsonArrayBuilder rules = Json.array();
packageNames.stream()
.map(packageName -> Json.object().put("excludeClasses", packageName + ".**"))
.forEach(rules::add);
result.put("rules", rules);
final Json.JsonArrayBuilder regexRules = Json.array();
regexRules.add(Json.object().put("excludeClasses", ".*_Bean"));
result.put("regexRules", regexRules);
try (BufferedWriter writer = new BufferedWriter(new FileWriter(path.toFile(), StandardCharsets.UTF_8))) {
result.appendTo(writer);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write quarkus native image agent caller filter to " + path, e);
}
}
private Collection<ResolvedDependency> getDependencies() throws MojoExecutionException {
try (CuratedApplication curatedApplication = bootstrapApplication(LaunchMode.TEST)) {
return curatedApplication.getApplicationModel().getDependencies();
} catch (Exception any) {
throw new MojoExecutionException("Quarkus native image agent filter generation phase has failed", any);
}
}
private Set<String> getCommonExcludePackageNames() {
Set<String> packageNames = new HashSet<>();
// Any calls that access or originate in these packages
// that require native configuration should be handled by Quarkus.
packageNames.add("io.netty");
packageNames.add("io.quarkus");
packageNames.add("io.smallrye");View on GitHub (pinned to e1c734241f)
Solutions
- Ensure the parent directory of the filter file exists and is writable (e.g. `mvn quarkus:generate-code-tests` after a build creates target/)
- Check file permissions on the output path and that it is not a directory
- Free disk space / verify the path configured for the agent filter files is valid
Example fix
// before mkdir target # only if missing, before running mvn quarkus:generate-code-tests // after mvn process-test-classes quarkus:generate-code-tests # ensures target/ exists
Defensive patterns
Strategy: validation
Validate before calling
test -w <filter-file-dir> && test ! -d <filter-file> && df -h <filter-file-dir>
Try / catch
try {
mvn quarkus:generate-code-tests
} catch (MojoExecutionException e) {
// check the path named in the message: create parent dir / fix permissions
} Prevention
- Ensure target/ exists (run a prior build phase) before agent filter generation
- Point agent filter file paths at writable directories
- Monitor disk space in CI
When it happens
Trigger: Opening or writing path.toFile() with FileWriter(UTF-8) fails — e.g. the target directory does not exist, the path is a directory, or the process lacks write permission.
Common situations: target/ directory removed or read-only during CI; running `mvn quarkus:generate-code-tests` with -Dquarkus.test.native-image-agent-filter-files pointing to an unwritable/nonexistent location; disk-full conditions.
Understand the failure class
Background: "Permission denied" / "Failed to write" file errors: why a library can't write its files to disk (EACCES, EPERM, ENOSPC) and how to fix them — this error's family across 43 libraries.
Related errors
- Failed to initialize file output writer
- Failed to log the dependency list to a file
- Failed to initialize file output writer
- Failed to log the dependency tree to a file
- Failed to transform native image agent configuration
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/133e7c9e16b46742.
Report an issue: GitHub.