{"record":{"id":"71586dd62ef37e28","repo":"languagetool-org/languagetool","slug":"invalid-format-in-settings-filename-71586d","errorCode":null,"errorMessage":"Invalid format in \" + settings.filename + \": '\" + line + \"', expected one element with no separator","messagePattern":"Invalid format in \" \\+ settings\\.filename \\+ \": '\" \\+ line \\+ \"', expected one element with no separator","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java","lineNumber":118,"sourceCode":"      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) {\n            String firstChar = casingVariant.substring(0, 1);\n            if (mStartNoSpace.containsKey(firstChar)) {\n              if (mStartNoSpace.get(firstChar) < casingVariant.length()) {\n                mStartNoSpace.put(firstChar, casingVariant.length());","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java#L100-L136","documentation":"Complementary format check in the multi-word chunker loader: a line contains only one element, i.e. no separator at all, so there is a phrase with no assigned chunk tag. The settings file requires phrase and tag separated by the configured separator.","triggerScenarios":"Thrown at languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java:118 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the missing chunk tag after the separator on the cited line","Ensure the separator (default tab) was not lost by editor autocorrect or copy-paste","Verify the file wasn't saved with fields merged onto one column"],"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"}