{"record":{"id":"6b8a479420e77c29","repo":"HMCL-dev/HMCL","slug":"cannot-parse-the-version-of-6b8a47","errorCode":null,"errorMessage":"Cannot parse the version of ","messagePattern":"Cannot parse the version of ","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/modrinth/ModrinthModpackExportTask.java","lineNumber":199,"sourceCode":"                                    }\n                                } catch (IOException e) {\n                                    LOG.warning(\"Failed to process file: \" + file, e);\n                                }\n                            });\n                }\n            }\n\n            zip.putDirectory(runDirectory, \"client-overrides\", path -> {\n                String relativePath = path.replace(File.separatorChar, '/');\n                if (filesInManifest.contains(relativePath)) {\n                    return false;\n                }\n                return Modpack.acceptFile(path, blackList, info.getWhitelist());\n            });\n\n            GameVersionNumber version = instance.getVersion();\n            if (version == GameVersionNumber.unknown()) {\n                throw new IOException(\"Cannot parse the version of \" + instanceId);\n            }\n            String gameVersion = version.toString();\n            GameComponentAnalyzer analyzer = instance.getAnalyzer();\n\n            Map<String, String> dependencies = new HashMap<>();\n            dependencies.put(\"minecraft\", gameVersion);\n\n            Optional.ofNullable(analyzer.getVersion(GameComponentType.FORGE)).ifPresent(forgeVersion ->\n                    dependencies.put(\"forge\", forgeVersion));\n            Optional.ofNullable(analyzer.getVersion(GameComponentType.NEO_FORGE)).ifPresent(neoForgeVersion ->\n                    dependencies.put(\"neoforge\", neoForgeVersion));\n            Optional.ofNullable(analyzer.getVersion(GameComponentType.FABRIC)).ifPresent(fabricVersion ->\n                    dependencies.put(\"fabric-loader\", fabricVersion));\n            Optional.ofNullable(analyzer.getVersion(GameComponentType.QUILT)).ifPresent(quiltVersion ->\n                    dependencies.put(\"quilt-loader\", quiltVersion));\n\n            ModrinthManifest manifest = new ModrinthManifest(\n                    \"minecraft\",","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/HMCL-dev/HMCL/blob/24702dc5a0214034f4c27166d5fd30cad08cec19/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/modrinth/ModrinthModpackExportTask.java#L181-L217","documentation":"Thrown while exporting a Modrinth modpack when HMCL cannot determine the instance's game version (instance.getVersion() returns GameVersionNumber.unknown()). A Modrinth manifest requires an explicit Minecraft version in dependencies.","triggerScenarios":"Calling ModrinthModpackExportTask.execute() on an instance whose version cannot be inferred, e.g. no version.json/game jar metadata or an isolated/unknown instance.","commonSituations":"Exporting a broken or manually assembled instance; instances missing their version metadata; very old or modified game directories.","solutions":["Set the instance's game version correctly in HMCL instance settings so getVersion() resolves","Verify versions/<version>/version.json exists and is valid inside the instance directory","Re-download/reinstall the instance's game files before exporting"],"exampleFix":"// before\n// exporting an instance with unresolvable version\nGameVersionNumber version = instance.getVersion(); // unknown()\n// after\n// fix instance settings (game version = 1.20.1) then export\nGameVersionNumber version = instance.getVersion(); // resolves to 1.20.1","handlingStrategy":"validation","validationCode":"if (instance.getVersion() == GameVersionNumber.unknown()) throw new IOException(\"Cannot parse the version of \" + instanceId);","typeGuard":"boolean versionKnown(DefaultGameRepository repo, String id) { return repo.getGameVersion(id).isPresent(); }","tryCatchPattern":"try { exportTask.execute(); } catch (IOException e) { /* ask user to fix instance version settings */ }","preventionTips":["Verify instance game version is set before exporting","Keep versions/<v>/version.json intact in the instance directory"],"tags":["modrinth","export","game-version","io"],"backgroundTag":"missing-required-config-field","analyzedSha":"24702dc5a0214034f4c27166d5fd30cad08cec19","analyzedAt":"2026-09-10T12:36:46.680Z","contentChangedAt":"2026-09-10T12:36:46.680Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}