{"record":{"id":"d60c8b5ef3face62","repo":"GoogleContainerTools/jib","slug":"property-cannot-be-less-than-validrange-lo","errorCode":null,"errorMessage":"property + \" cannot be less than \" + validRange.lowerEndpoint() + \": \" + value","messagePattern":"property \\+ \" cannot be less than \" \\+ validRange\\.lowerEndpoint\\(\\) \\+ \": \" \\+ value","errorType":"validation","errorClass":"NumberFormatException","httpStatus":null,"severity":"error","filePath":"jib-core/src/main/java/com/google/cloud/tools/jib/global/JibSystemProperties.java","lineNumber":139,"sourceCode":"   */\n  public static boolean skipExistingImages() {\n    return Boolean.getBoolean(SKIP_EXISTING_IMAGES);\n  }\n\n  private static void checkNumericSystemProperty(String property, Range<Integer> validRange) {\n    String value = System.getProperty(property);\n    if (value == null) {\n      return;\n    }\n\n    int parsed;\n    try {\n      parsed = Integer.parseInt(value);\n    } catch (NumberFormatException ex) {\n      throw new NumberFormatException(property + \" must be an integer: \" + value);\n    }\n    if (validRange.hasLowerBound() && validRange.lowerEndpoint() > parsed) {\n      throw new NumberFormatException(\n          property + \" cannot be less than \" + validRange.lowerEndpoint() + \": \" + value);\n    } else if (validRange.hasUpperBound() && validRange.upperEndpoint() < parsed) {\n      throw new NumberFormatException(\n          property + \" cannot be greater than \" + validRange.upperEndpoint() + \": \" + value);\n    }\n  }\n\n  private JibSystemProperties() {}\n}\n","sourceCodeStart":121,"sourceCodeEnd":149,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-core/src/main/java/com/google/cloud/tools/jib/global/JibSystemProperties.java#L121-L149","documentation":"checkNumericSystemProperty validates the parsed integer against a valid Range. This NumberFormatException is thrown when the value parses but is below the property's lower bound. The message names the property, the minimum allowed, and the offending value.","triggerScenarios":"Setting -Djib.httpTimeout=0 or a negative timeout (must be > 0), or a proxy port below the allowed minimum (ports must be >= 0/1 as enforced).","commonSituations":"Setting jib.httpTimeout=0 expecting 'infinite' or 'disabled' timeout; negative port numbers from misread docs; template variables left unexpanded (e.g. ${TIMEOUT} resolving to 0 or negative).","solutions":["Set jib.httpTimeout to a positive integer (milliseconds), e.g. 20000","Use a valid proxy port within the allowed range (e.g. 1-65535)","Check Jib docs for the exact valid range of the property","Remove the property to fall back to library defaults"],"exampleFix":"// before\ngradle jib -Djib.httpTimeout=0\n// after\ngradle jib -Djib.httpTimeout=20000","handlingStrategy":"validation","validationCode":"long v = Long.parseLong(System.getProperty(\"jib.httpTimeout\", \"0\"));\nif (v <= 0) throw new IllegalArgumentException(\"jib.httpTimeout must be > 0\");","typeGuard":null,"tryCatchPattern":"try { jibStep(); } catch (NumberFormatException e) { if (e.getMessage().contains(\"cannot be less than\")) { failBuild(\"Value too small: \" + e.getMessage()); } throw e; }","preventionTips":["Remember jib.httpTimeout is in milliseconds and must be positive","Never use 0 to mean 'no timeout' — omit the property instead","Validate template-expanded variables resolve to positive numbers"],"tags":["configuration","system-properties","validation","number-format"],"backgroundTag":"value-out-of-range","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}