projectlombok/lombok · error · IllegalArgumentException

Lombok supports at most v

Error message

Lombok supports at most v${s}; reduce the value of key 'checkerframework' to ${s}

What it means

CheckerFrameworkVersion.valueOf parses a 'checkerframework' configuration key value (e.g. 'v3.42') into a version number. Lombok's bundled Checker Framework annotations only support versions up to MAX_SUPPORTED, so a higher requested version is rejected with IllegalArgumentException at parse time of lombok.config.

Solutions

  1. Lower the 'checkerframework' config key value to at most the version stated in the message (v + number reported).
  2. Upgrade Lombok to a release that supports your Checker Framework version, then keep the version key.
  3. Use only 'major' or 'major.minor' in the value (e.g. '3.42', not '3.42.0'); minor must be 0-999.

Example fix

// before (lombok.config)
checkerframework = 3.999
// after
checkerframework = 3.42
Defensive patterns

Strategy: validation

Validate before calling

boolean isValidCheckerFrameworkVersion(String v) {
  java.util.regex.Matcher m = java.util.regex.Pattern.compile("(\\d+)(?:\\.(\\d+))?").matcher(v.trim());
  if (!m.matches()) return false;
  int minor = m.group(2) != null ? Integer.parseInt(m.group(2)) : 0;
  return minor <= 999 && Integer.parseInt(m.group(1)) * 1000 + minor <= 42000; // compare with lombok's MAX_SUPPORTED
}

Try / catch

try {
  CheckerFrameworkVersion v = CheckerFrameworkVersion.valueOf(cfg);
} catch (IllegalArgumentException e) {
  // fall back to the max supported version stated in e.getMessage()
}

Prevention

When it happens

Trigger: Setting `lombok.checkerframework`-related config key 'checkerframework' to a version string whose major*1000+minor exceeds MAX_SUPPORTED; also thrown when minor > 999 by an earlier check in the same valueOf.

Common situations: Copying a Checker Framework version like 'v3.49.0' or a future version from documentation into lombok.config before Lombok has added support for it; typos producing an out-of-range minor segment.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of projectlombok/lombok@6d6a3e9fec (2026-09-07). Data as JSON: /api/errors/aa3e0728bc421462. Report an issue: GitHub.

Appendix: source

Thrown at src/core/lombok/core/configuration/CheckerFrameworkVersion.java:78

	}
	
	public boolean generateCalledMethods() {
		return version >= 3100;
	}
	
	public static CheckerFrameworkVersion valueOf(String versionString) {
		if (versionString != null) versionString = versionString.trim();
		if (versionString == null || versionString.equalsIgnoreCase("false") || versionString.equals("0")) return new CheckerFrameworkVersion(0);
		if (versionString.equalsIgnoreCase("true")) return new CheckerFrameworkVersion(DEFAULT);
		Matcher m = VERSION.matcher(versionString);
		if (!m.matches()) throw new IllegalArgumentException("Expected 'true' or 'false' or a major/minor version, such as '2.9'");
		int major = Integer.parseInt(m.group(1));
		int minor = (m.group(2) != null && !m.group(2).isEmpty()) ? Integer.parseInt(m.group(2)) : 0;
		if (minor > 999) throw new IllegalArgumentException("Minor version must be between 0 and 999");
		int v = major * 1000 + minor;
		if (v > MAX_SUPPORTED) {
			String s = (v / 1000) + "." + (v % 1000);
			throw new IllegalArgumentException("Lombok supports at most v" + s + "; reduce the value of key 'checkerframework' to " + s);
		}
		return new CheckerFrameworkVersion(v);
	}
	
	public static String description() {
		return "checkerframework-version";
	}
	
	public static String exampleValue() {
		String s = (MAX_SUPPORTED / 1000) + "." + (MAX_SUPPORTED % 1000);
		return "major.minor (example: 3.2 - and no higher than " + s + ") or true or false";
	}
	
	@Override public boolean equals(Object obj) {
		if (!(obj instanceof CheckerFrameworkVersion)) return false;
		return version == ((CheckerFrameworkVersion) obj).version;
	}
	

View on GitHub (pinned to 6d6a3e9fec)