languagetool-org/languagetool · error · RuntimeException

Invalid format in " + settings.filename + ": '" + line + "',

Error message

Invalid format in " + settings.filename + ": '" + line + "', expected two tab-separated parts

What it means

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.

Source

Thrown at languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java:114

      mFullSpace.trim();
      mFullNoSpace.trim();

      this.mStartSpace = mStartSpace;
      this.mStartNoSpace = mStartNoSpace;
      this.mFullSpace = mFullSpace;
      this.mFullNoSpace = mFullNoSpace;
      initialized = true;
    }
  }

  private void fillMaps(Map<String, Integer> mStartSpace, Map<String, Integer> mStartNoSpace, Map<String,
    AnalyzedToken> mFullSpace, Map<String, AnalyzedToken> mFullNoSpace) {
    try (InputStream stream = JLanguageTool.getDataBroker().getFromResourceDirAsStream(settings.filename)) {
      List<String> lines = loadWords(stream);
      for (String line : lines) {
        String[] stringAndTag = line.split(separator);
        if (stringAndTag.length != 2 && settings.defaultTag == null) {
          throw new RuntimeException(
            "Invalid format in " + settings.filename + ": '" + line + "', expected two tab-separated parts");
        }
        if (stringAndTag.length != 1 && settings.defaultTag != null) {
          throw new RuntimeException(
            "Invalid format in " + settings.filename + ": '" + line + "', expected one element with no separator");
        }
        List<String> casingVariants = new ArrayList<>();
        String originalString = intern(stringAndTag[0]);
        String tag = intern(settings.defaultTag != null ? settings.defaultTag : stringAndTag[1]);
        boolean containsSpace = originalString.indexOf(' ') > 0;
        casingVariants.add(originalString);
        if (containsSpace) {
          casingVariants.addAll(getTokenLettercaseVariants(originalString, mFullSpace));
        } else {
          casingVariants.addAll(getTokenLettercaseVariants(originalString, mFullNoSpace));
        }
        for (String casingVariant : casingVariants) {
          if (!containsSpace) {

View on GitHub (pinned to 2e990059ce)

Solutions

  1. Fix the cited line so it has exactly two tab-separated fields: phrase and chunk tag
  2. Check for a #separatorRegExp= header changing the expected separator
  3. Remove extra tabs or trailing whitespace-created fields
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java:114 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of languagetool-org/languagetool@2e990059ce (2026-09-06). Data as JSON: /api/errors/cc3c14965cbd5a74. Report an issue: GitHub.