HMCL-dev/HMCL · error · FileNotFoundException
Game processor file not found, should be downloaded in…
Error message
Game processor file not found, should be downloaded in preprocess
What it means
Thrown as java.io.FileNotFoundException by ProcessorTask.execute when the processor's JAR artifact (processor.getJar(), e.g. the NeoForge installer's toolbox/unpacking processor jar) is not a regular file in the game repository. The preprocess download step (GameLibrariesTask of the install profile) should have downloaded it; this error means that step failed, was skipped, or the file was deleted from the libraries directory.
Solutions
- Re-run the NeoForge/Forge installation so the preprocess (GameLibrariesTask) downloads the missing processor jar again
- Verify network/mirror availability and retry the download of the version's libraries
- Check the file at the path printed in the error under .minecraft/libraries and delete corrupted sibling files so they are re-fetched
- Temporarily disable antivirus that may quarantine freshly downloaded jars
- Install to a fresh game directory to rule out a corrupted repository
Defensive patterns
Strategy: validation
Validate before calling
Path jar = gameRepository.getLayout().getArtifactFile(processor.getJar());
if (!Files.isRegularFile(jar)) {
// re-run library download (GameLibrariesTask) before executing processors
} Try / catch
try { task.run(); } catch (FileNotFoundException e) { if (e.getMessage().contains("Game processor file not found")) reDownloadLibrariesAndRetry(); else throw e; } Prevention
- Always run the preprocess/library download step to completion before processors
- Verify downloads with SHA-1 integrity checks
- Exclude the game directory from antivirus real-time scanning
- Don't manually clean the libraries directory during an install
When it happens
Trigger: NeoForge/Forge (old-style install_profile.json) installation runs ProcessorTask.execute after output checksums were missing/mismatched; gameRepository.getLayout().getArtifactFile(processor.getJar()) does not exist because the preprocess library download failed, was interrupted, or the file was manually deleted.
Common situations: Network failures or antivirus quarantine during library download; corrupted/cleaned .minecraft/libraries directory; retrying an install after a partial download; download mirror missing the processor artifact.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- Failed to download texture
- Unsupported checksum type:
- Missing download URI:
- Fabric metadata is invalid
- Game processor jar does not have main class
AI-assisted analysis of HMCL-dev/HMCL@24702dc5a0 (2026-09-10).
Data as JSON: /api/errors/6878727a66002179.
Report an issue: GitHub.
Appendix: source
Thrown at HMCLCore/src/main/java/org/jackhuang/hmcl/download/neoforge/NeoForgeOldInstallTask.java:114
if (!Objects.equals(code, value)) {
Files.delete(artifact);
LOG.info("Found existing file is not valid: " + artifact);
miss = true;
}
} else {
miss = true;
}
}
if (!processor.getOutputs().isEmpty() && !miss) {
return;
}
Path jar = gameRepository.getLayout().getArtifactFile(processor.getJar());
if (!Files.isRegularFile(jar))
throw new FileNotFoundException("Game processor file not found, should be downloaded in preprocess");
String mainClass;
try (JarFile jarFile = new JarFile(jar.toFile())) {
mainClass = jarFile.getManifest().getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
}
if (StringUtils.isBlank(mainClass))
throw new Exception("Game processor jar does not have main class " + jar);
List<String> command = new ArrayList<>();
command.add(JavaRuntime.getDefault().getBinary().toString());
command.add("-cp");
List<String> classpath = new ArrayList<>(processor.getClasspath().size() + 1);
for (Artifact artifact : processor.getClasspath()) {
Path file = gameRepository.getLayout().getArtifactFile(artifact);
if (!Files.isRegularFile(file))
throw new Exception("Game processor dependency missing");View on GitHub (pinned to 24702dc5a0)