languagetool-org/languagetool · error · RuntimeException

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

Error message

Invalid format in " + settings.filename + ": '" + line + "', expected one element with no separator

What it means

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.

Source

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

      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) {
            String firstChar = casingVariant.substring(0, 1);
            if (mStartNoSpace.containsKey(firstChar)) {
              if (mStartNoSpace.get(firstChar) < casingVariant.length()) {
                mStartNoSpace.put(firstChar, casingVariant.length());

View on GitHub (pinned to 2e990059ce)

Solutions

  1. Add the missing chunk tag after the separator on the cited line
  2. Ensure the separator (default tab) was not lost by editor autocorrect or copy-paste
  3. Verify the file wasn't saved with fields merged onto one column
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at languagetool-core/src/main/java/org/languagetool/tagging/disambiguation/MultiWordChunker.java:118 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/71586dd62ef37e28. Report an issue: GitHub.