skylot/jadx · error · JadxArgsValidateException
File not found ${file.getAbsolutePath()}
Error message
File not found ${file.getAbsolutePath()} What it means
An argument-validation error from JadxArgsValidator.checkFile(), invoked for every file in args.getInputFiles(). If !file.exists(), jadx cannot read it and throws JadxArgsValidateException with the absolute path. This runs during initialization, before the zip is ever opened.
Source
Thrown at jadx-core/src/main/java/jadx/api/JadxArgsValidator.java:84
if (inputFiles.isEmpty()) {
outDirName = JadxArgs.DEFAULT_OUT_DIR;
} else {
File file = inputFiles.get(0);
String name = file.getName();
int pos = name.lastIndexOf('.');
if (pos != -1) {
outDirName = name.substring(0, pos);
} else {
outDirName = name + '-' + JadxArgs.DEFAULT_OUT_DIR;
}
}
LOG.info("output directory: {}", outDirName);
return new File(outDirName);
}
private static void checkFile(File file) {
if (!file.exists()) {
throw new JadxArgsValidateException("File not found " + file.getAbsolutePath());
}
}
private static void checkDir(File dir, String desc) {
if (dir != null && dir.exists() && !dir.isDirectory()) {
throw new JadxArgsValidateException(desc + " directory exists as file " + dir);
}
}
private JadxArgsValidator() {
}
}
View on GitHub (pinned to e738a26571)
Solutions
- Verify the absolute path printed in the message exists on the filesystem.
- Use absolute paths or resolve relative paths against a known base directory.
- In containers, confirm the file is mounted/copied to the path jadx sees.
- Pre-check with Files.exists(Path) before constructing JadxArgs to fail with your own message.
Example fix
// before
args.setInputFiles(List.of(new File(inputPath)));
// after
File f = new File(inputPath);
if (!f.isFile()) {
throw new IllegalArgumentException("Input APK not found at: " + f.getAbsolutePath());
}
args.setInputFiles(List.of(f)); Defensive patterns
Strategy: validation
Validate before calling
for (File f : args.getInputFiles()) {
if (!f.isFile()) {
throw new IllegalArgumentException("Input file not found: " + f.getAbsolutePath());
}
} Try / catch
try {
decompiler.load();
} catch (JadxArgsValidateException e) {
if (e.getMessage().startsWith("File not found")) {
LOG.error("Missing input, check path/CWD: {}", e.getMessage());
} else throw e;
} Prevention
- Use absolute paths or resolve relative paths against a known base directory.
- Pre-check Files.exists/Files.isRegularFile before constructing JadxArgs.
- In containers, confirm the file is mounted to the path jadx sees.
When it happens
Trigger: Passing an input file path that does not exist on disk to JadxArgs.setInputFiles(); a typo, a relative path resolved against an unexpected working directory, or a file that was deleted between selection and load.
Common situations: Relative paths resolved from a different CWD than expected in a CLI or service; a build artifact referenced before it was produced; a moved/deleted APK; containerized runs where the file is not mounted into the expected path.
Related errors
- Please specify input file
- ${desc} directory exists as file ${dir}
- Zip file is too big
- Failed to apply options for plugin: {}
- Malformed 'requiredJadxVersion': {}
AI-assisted analysis of skylot/jadx@e738a26571 (2026-08-14).
Data as JSON: /api/errors/8624df57c79484bb.
Report an issue: GitHub.