{"record":{"id":"867122d3f30c5f87","repo":"apache/maven","slug":"unable-to-read-toolchains","errorCode":null,"errorMessage":"Unable to read toolchains: {}","messagePattern":"Unable to read toolchains: (.+?)","errorType":"exception","errorClass":"XmlReaderException","httpStatus":null,"severity":"error","filePath":"impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultToolchainsXmlFactory.java","lineNumber":72,"sourceCode":"        if (reader == null && inputStream == null) {\n            throw new IllegalArgumentException(\"reader or inputStream must be non null\");\n        }\n        try {\n            InputSource source = null;\n            if (request.getModelId() != null || request.getLocation() != null) {\n                source = InputSource.of(request.getLocation());\n            }\n            MavenToolchainsStaxReader xml = request.getTransformer() != null\n                    ? new MavenToolchainsStaxReader(request.getTransformer()::transform)\n                    : new MavenToolchainsStaxReader();\n            xml.setAddDefaultEntities(request.isAddDefaultEntities());\n            if (reader != null) {\n                return xml.read(reader, request.isStrict(), source);\n            } else {\n                return xml.read(inputStream, request.isStrict(), source);\n            }\n        } catch (Exception e) {\n            throw new XmlReaderException(\"Unable to read toolchains: \" + getMessage(e), getLocation(e), e);\n        }\n    }\n\n    @Override\n    public void write(XmlWriterRequest<PersistedToolchains> request) throws XmlWriterException {\n        requireNonNull(request, \"request\");\n        PersistedToolchains content = Objects.requireNonNull(request.getContent(), \"content\");\n        OutputStream outputStream = request.getOutputStream();\n        Writer writer = request.getWriter();\n        if (writer == null && outputStream == null) {\n            throw new IllegalArgumentException(\"writer or outputStream must be non null\");\n        }\n        try {\n            MavenToolchainsStaxWriter xmlWriter = new MavenToolchainsStaxWriter();\n            xmlWriter.setAddLocationInformation(false);\n\n            Function<Object, String> formatter = request.getInputLocationFormatter();\n            if (formatter != null) {","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultToolchainsXmlFactory.java#L54-L90","documentation":"Wrapper thrown when parsing a PersistedToolchains document fails: malformed toolchains.xml, strict-mode rejection of unknown elements, or IO errors on the supplied Reader/InputStream. The cause is preserved, and STaX causes carry line and column information appended to the message.","triggerScenarios":"Badly formed toolchains.xml fed via reader/inputStream; unknown elements with strict=true; streams that fail during read.","commonSituations":"Corrupted toolchains file after manual editing; version skew between the toolchains file format and the runtime model; encoding problems.","solutions":["Unwrap getCause() for the exact line and column","Retry with .strict(false) when unknown elements are tolerable","Lint the toolchains.xml externally before parsing"],"exampleFix":"// before\nPersistedToolchains t = toolchainsXmlFactory.read(XmlReaderRequest.builder()\n    .inputStream(is)\n    .build()); // strict default may reject unknown elements\n\n// after\nPersistedToolchains t = toolchainsXmlFactory.read(XmlReaderRequest.builder()\n    .inputStream(is)\n    .strict(false)\n    .build());","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    PersistedToolchains t = toolchainsXmlFactory.read(req);\n} catch (XmlReaderException e) {\n    Throwable cause = e.getCause();\n    // STaX cause carries line/column of the parse failure\n    log.error(\"toolchains.xml invalid: {}\", e.getMessage(), cause);\n}","preventionTips":["Run xmllint on toolchains.xml after manual edits","Use strict(false) when parsing toolchains files written by other Maven versions"],"tags":["maven","toolchains","xml","parse"],"backgroundTag":"xml-parse-failed","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}