{"record":{"id":"e4ca66934abd2a88","repo":"elastic/elasticsearch","slug":"expected-zero-arguments-but-was","errorCode":null,"errorMessage":"expected zero arguments but was {}","messagePattern":"expected zero arguments but was (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java","lineNumber":25,"sourceCode":" * License v3.0 only\", or the \"Server Side Public License, v 1\".\n */\n\npackage org.elasticsearch.tools.java_version_checker;\n\nimport java.util.Arrays;\nimport java.util.Locale;\n\n/**\n * Java 8 compatible main to check the runtime version\n */\nfinal class JavaVersionChecker {\n\n    private JavaVersionChecker() {}\n\n    public static void main(final String[] args) {\n        // no leniency!\n        if (args.length != 0) {\n            throw new IllegalArgumentException(\"expected zero arguments but was \" + Arrays.toString(args));\n        }\n\n        final int MIN_VERSION = 21;\n        final int version;\n        String versionString = System.getProperty(\"java.specification.version\");\n        if (versionString.equals(\"1.8\")) {\n            version = 8;\n        } else {\n            version = Integer.parseInt(versionString);\n        }\n        if (version >= MIN_VERSION) {\n            return;\n        }\n\n        final String message = String.format(\n            Locale.ROOT,\n            \"The minimum required Java version is %d; your Java version %d from [%s] does not meet that requirement.\",\n            MIN_VERSION,","sourceCodeStart":7,"sourceCodeEnd":43,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java#L7-L43","documentation":"JavaVersionChecker.main rejects any command-line arguments: the tool takes none. If args.length != 0 it throws IllegalArgumentException printing the supplied args. The tool exists only to verify java.specification.version >= 21 and exit non-zero otherwise.","triggerScenarios":"Invoking the java-version-checker jar/main with any CLI args (flags, --help, a path). The entrypoint is meant to be called by the Gradle/launcher shim with no arguments.","commonSituations":"Someone ran the checker jar manually with flags; a custom launcher script appended arguments; debugging hook passed extra args.","solutions":["Invoke java-version-checker with no arguments: java -jar java-version-checker.jar.","If your launcher needs flags, pass them to the JVM (-J args) or to the surrounding script, not as program args.","Confirm the Gradle 'java-version-checker' task is the one launching it (it always passes zero args)."],"exampleFix":"// before\njava -jar java-version-checker.jar --check 21\n// after\njava -jar java-version-checker.jar","handlingStrategy":"validation","validationCode":"if (args != null && args.length != 0) throw new IllegalArgumentException(\"java-version-checker takes no args\");\n// invoke main with new String[0]","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always call the checker with zero program args.","Pass JVM flags via -J or the launcher, not as program args."],"tags":["build-tools","java-version-checker","launcher","configuration"],"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-12T08:17:17.861Z"}