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
- Edit filedownloader.properties and set the flagged key to exactly 'true' or 'false' (lowercase, no quotes/whitespace)
- Check for typos in the property value such as 'ture', 'TRUE', 'yes', or '1'
- 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)