lingochamp/FileDownloader · error · IllegalStateException

the value of ' ' must be ' ' or

Error message

the value of '%s' must be '%s' or '%s'

What it means

Strict property parsing in the FileDownloadProperties constructor while loading filedownloader.properties: every boolean-style field (the message's first %s names the property key) accepts only the exact strings 'true' or 'false' (the second and third %s). Any other value — 'True', '1', 'yes', or a typo — aborts library initialization with this IllegalStateException. The faulty input is the value written for that key in the properties file.

Solutions

  1. Edit filedownloader.properties and set the flagged key to exactly 'true' or 'false' (lowercase, no quotes/whitespace)
  2. Check for typos in the property value such as 'ture', 'TRUE', 'yes', or '1'
  3. Confirm the properties file is in the assets directory and uses simple key=value lines with no stray characters
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at library/src/main/java/com/liulishuo/filedownloader/util/FileDownloadProperties.java:219 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of lingochamp/FileDownloader@6237a8cac1 (2026-09-08). Data as JSON: /api/errors/4e26b77955dc8e10. Report an issue: GitHub.

Appendix: source

Thrown at library/src/main/java/com/liulishuo/filedownloader/util/FileDownloadProperties.java:219

                }
            } else {
                e.printStackTrace();
            }
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


        //http.lenient
        if (httpLenient != null) {
            if (!httpLenient.equals(TRUE_STRING) && !httpLenient.equals(FALSE_STRING)) {
                throw new IllegalStateException(
                        FileDownloadUtils.formatString("the value of '%s' must be '%s' or '%s'",
                                KEY_HTTP_LENIENT, TRUE_STRING, FALSE_STRING));
            }
            this.httpLenient = httpLenient.equals(TRUE_STRING);
        } else {
            this.httpLenient = false;
        }

        //process.non-separate
        if (processNonSeparate != null) {
            if (!processNonSeparate.equals(TRUE_STRING)
                    && !processNonSeparate.equals(FALSE_STRING)) {
                throw new IllegalStateException(
                        FileDownloadUtils.formatString("the value of '%s' must be '%s' or '%s'",
                                KEY_PROCESS_NON_SEPARATE, TRUE_STRING, FALSE_STRING));
            }
            this.processNonSeparate = processNonSeparate.equals(TRUE_STRING);
        } else {

View on GitHub (pinned to 6237a8cac1)