{"record":{"id":"cc3c14965cbd5a74","repo":"languagetool-org/languagetool","slug":"invalid-format-in-settings-filename","errorCode":null,"errorMessage":"Invalid format in \" + settings.filename + \": '\" + line + \"', expected two tab-separated parts","messagePattern":"Invalid format in \" \\+ settings\\.filename \\+ \": '\" \\+ line \\+ \"', expected two tab-separated parts","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java","lineNumber":114,"sourceCode":"      mFullSpace.trim();\n      mFullNoSpace.trim();\n\n      this.mStartSpace = mStartSpace;\n      this.mStartNoSpace = mStartNoSpace;\n      this.mFullSpace = mFullSpace;\n      this.mFullNoSpace = mFullNoSpace;\n      initialized = true;\n    }\n  }\n\n  private void fillMaps(Map<String, Integer> mStartSpace, Map<String, Integer> mStartNoSpace, Map<String,\n    AnalyzedToken> mFullSpace, Map<String, AnalyzedToken> mFullNoSpace) {\n    try (InputStream stream = JLanguageTool.getDataBroker().getFromResourceDirAsStream(settings.filename)) {\n      List<String> lines = loadWords(stream);\n      for (String line : lines) {\n        String[] stringAndTag = line.split(separator);\n        if (stringAndTag.length != 2 && settings.defaultTag == null) {\n          throw new RuntimeException(\n            \"Invalid format in \" + settings.filename + \": '\" + line + \"', expected two tab-separated parts\");\n        }\n        if (stringAndTag.length != 1 && settings.defaultTag != null) {\n          throw new RuntimeException(\n            \"Invalid format in \" + settings.filename + \": '\" + line + \"', expected one element with no separator\");\n        }\n        List<String> casingVariants = new ArrayList<>();\n        String originalString = intern(stringAndTag[0]);\n        String tag = intern(settings.defaultTag != null ? settings.defaultTag : stringAndTag[1]);\n        boolean containsSpace = originalString.indexOf(' ') > 0;\n        casingVariants.add(originalString);\n        if (containsSpace) {\n          casingVariants.addAll(getTokenLettercaseVariants(originalString, mFullSpace));\n        } else {\n          casingVariants.addAll(getTokenLettercaseVariants(originalString, mFullNoSpace));\n        }\n        for (String casingVariant : casingVariants) {\n          if (!containsSpace) {","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java#L96-L132","documentation":"Format validation while loading the multi-word chunker settings file: a line does not split into exactly two tab-separated parts (multi-word string, chunk tag). Fires on malformed lines in the language's multiwords.txt, e.g. missing tab, extra fields, or a line that is only a word without its tag.","triggerScenarios":"Thrown at languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java:114 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the cited line so it has exactly two tab-separated fields: phrase and chunk tag","Check for a #separatorRegExp= header changing the expected separator","Remove extra tabs or trailing whitespace-created fields"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}