languagetool-org/languagetool · error · IllegalConfigurationException

Parameter --config must be set and point to a property file

Error message

Parameter --config must be set and point to a property file

What it means

HTTPSServerConfig's command-line parser requires a --config argument pointing to a properties file; if it is absent, it throws IllegalConfigurationException('Parameter --config must be set and point to a property file'). The HTTPS server cannot start without its keystore configuration.

Source

Thrown at languagetool-server/src/main/java/org/languagetool/server/HTTPSServerConfig.java:83

    this.keystore = keystore;
    this.keyStorePassword = keyStorePassword;
    this.requestLimit = requestLimit;
    this.requestLimitPeriodInSeconds = requestLimitPeriodInSeconds;
  }

  /**
   * Parse command line options and load settings from property file.
   */
  HTTPSServerConfig(String[] args) {
    super(args);
    File config = null;
    for (int i = 0; i < args.length; i++) {
      if ("--config".equals(args[i])) {
        config = new File(args[++i]);
      }
    }
    if (config == null) {
      throw new IllegalConfigurationException("Parameter --config must be set and point to a property file");
    }
    try {
      Properties props = new Properties();
      try (FileInputStream fis = new FileInputStream(config)) {
        props.load(fis);
        keystore = new File(getProperty(props, "keystore", config));
        keyStorePassword = getProperty(props, "password", config);
      }
    } catch (IOException e) {
      throw new RuntimeException("Could not load properties from '" + config + "'", e);
    }
  }

  File getKeystore() {
    return keystore;
  }

  String getKeyStorePassword() {

View on GitHub (pinned to 2e990059ce)

Solutions

  1. Add --config /path/to/server.properties to the launch command.
  2. Correct the flag spelling and ensure a path value follows --config.
  3. Create a properties file containing at least 'keystore' and 'password' entries.
  4. See https://dev.languagetool.org/http-server for the expected properties format.

Example fix

// before
java -cp languagetool-server.jar org.languagetool.server.HTTPSServer
// after
java -cp languagetool-server.jar org.languagetool.server.HTTPSServer --config server.properties
Defensive patterns

Strategy: validation

Validate before calling

// before launching
if (args == null || !Arrays.asList(args).contains("--config")) {
  throw new IllegalArgumentException("--config <server.properties> is required");
}

Try / catch

try {
  HTTPSServer.main(args);
} catch (IllegalConfigurationException e) {
  System.err.println(e.getMessage());
  System.err.println("Usage: HTTPSServer --config server.properties");
  System.exit(1);
}

Prevention

When it happens

Trigger: Launching HTTPSServer main without --config, or with a misspelled flag.

Common situations: Startup script omits the flag; flag typo (--conf/--configs); copying the plain HTTP server's command line, which has different requirements; systemd/docker CMD missing the argument.

Understand the failure class

Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.

Related errors


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