{"record":{"id":"3f109ab66ee38104","repo":"nostra13/Android-Universal-Image-Loader","slug":"imageloader-configuration-can-not-be-initialized-w","errorCode":null,"errorMessage":"ImageLoader configuration can not be initialized with null","messagePattern":"ImageLoader configuration can not be initialized with null","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"library/src/main/java/com/nostra13/universalimageloader/core/ImageLoader.java","lineNumber":94,"sourceCode":"\t\t\t}\n\t\t}\n\t\treturn instance;\n\t}\n\n\tprotected ImageLoader() {\n\t}\n\n\t/**\n\t * Initializes ImageLoader instance with configuration.<br />\n\t * If configurations was set before ( {@link #isInited()} == true) then this method does nothing.<br />\n\t * To force initialization with new configuration you should {@linkplain #destroy() destroy ImageLoader} at first.\n\t *\n\t * @param configuration {@linkplain ImageLoaderConfiguration ImageLoader configuration}\n\t * @throws IllegalArgumentException if <b>configuration</b> parameter is null\n\t */\n\tpublic synchronized void init(ImageLoaderConfiguration configuration) {\n\t\tif (configuration == null) {\n\t\t\tthrow new IllegalArgumentException(ERROR_INIT_CONFIG_WITH_NULL);\n\t\t}\n\t\tif (this.configuration == null) {\n\t\t\tL.d(LOG_INIT_CONFIG);\n\t\t\tengine = new ImageLoaderEngine(configuration);\n\t\t\tthis.configuration = configuration;\n\t\t} else {\n\t\t\tL.w(WARNING_RE_INIT_CONFIG);\n\t\t}\n\t}\n\n\t/**\n\t * Returns <b>true</b> - if ImageLoader {@linkplain #init(ImageLoaderConfiguration) is initialized with\n\t * configuration}; <b>false</b> - otherwise\n\t */\n\tpublic boolean isInited() {\n\t\treturn configuration != null;\n\t}\n","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/nostra13/Android-Universal-Image-Loader/blob/ba33ec64d0daaa881d35852460e78c58d086bc18/library/src/main/java/com/nostra13/universalimageloader/core/ImageLoader.java#L76-L112","documentation":"ImageLoader.init(ImageLoaderConfiguration) throws IllegalArgumentException(ERROR_INIT_CONFIG_WITH_NULL) when handed a null configuration. init() is the mandatory bootstrap: it creates the ImageLoaderEngine that all displayImage/loadImage calls depend on, so a null configuration would leave the singleton half-initialized. The class is a singleton; note that re-calling init with a non-null config after a successful init only logs a warning and does nothing until destroy().","triggerScenarios":"ImageLoader.getInstance().init(null); init(config) where config is a field that a custom Application.onCreate never assigned; building the configuration conditionally and one branch returns null.","commonSituations":"Application subclass where ImageLoaderConfiguration.Builder is only built on some code paths (e.g. inside an if for debug builds); unit tests initializing ImageLoader without a config; refactoring that moved init() but lost the assignment.","solutions":["Always build a config inline: ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(context).build())","Make the config field non-null: build a minimal default config and only add extras conditionally","Call init exactly once in Application.onCreate() before any displayImage call"],"exampleFix":"// before\nImageLoaderConfiguration cfg = null;\nif (BuildConfig.DEBUG) cfg = new ImageLoaderConfiguration.Builder(this).build();\nImageLoader.getInstance().init(cfg); // throws in release\n\n// after\nImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this)\n        .build());","handlingStrategy":"validation","validationCode":"ImageLoaderConfiguration cfg = (config != null)\n        ? config : ImageLoaderConfiguration.createDefault(context);\nImageLoader.getInstance().init(cfg);","typeGuard":null,"tryCatchPattern":"try {\n    ImageLoader.getInstance().init(config);\n} catch (IllegalArgumentException e) {\n    ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));\n}","preventionTips":["Call init() unconditionally at the top of Application.onCreate()","Never make init conditional on build flags without an else-branch that also inits","Build configurations inline rather than via nullable fields"],"tags":["configuration","initialization","null-safety","singleton"],"backgroundTag":null,"analyzedSha":"ba33ec64d0daaa881d35852460e78c58d086bc18","analyzedAt":"2026-08-14T15:41:15.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}