{"record":{"id":"d802a1348969f4af","repo":"xuxueli/xxl-job","slug":"xxl-job-executor-adminaddresses-empty","errorCode":null,"errorMessage":"xxl-job executor adminAddresses empty.","messagePattern":"xxl-job executor adminAddresses empty\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"critical","filePath":"xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java","lineNumber":138,"sourceCode":"    }\n    public TriggerCallbackThreadHelper getTriggerCallbackThreadHelper() {\n        return triggerCallbackThreadHelper;\n    }\n\n    /**\n     * start\n     */\n    public void start() throws Exception {\n\n        // valid enabled\n        if (!enabled) {\n            logger.info(\">>>>>>>>>>> xxl-job executor start fail, enabled:{}\", enabled);\n            return;\n        }\n\n        // valid param\n        if (StringTool.isBlank(adminAddresses)) {\n            throw new RuntimeException(\"xxl-job executor adminAddresses empty.\");\n        }\n        if (StringTool.isBlank(appname)) {\n            throw new RuntimeException(\"xxl-job executor appname empty.\");\n        }\n        if (StringTool.isBlank(accessToken)) {\n            throw new RuntimeException(\"xxl-job executor accessToken empty.\");\n        }\n\n        // bind instance\n        xxlJobExecutor = this;\n\n        // init logpath\n        XxlJobFileAppender.initLogPath(logPath);\n\n        // init invoker, admin-client\n        initAdminBizList();\n\n        // 1、init JobLogFileCleanThread","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/xuxueli/xxl-job/blob/e74c784f68f81fa89cb350913ef15794865d7b12/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java#L120-L156","documentation":"Thrown by XxlJobExecutor.start() when the adminAddresses field is blank. The executor needs at least one admin-server URL to register itself and receive triggers; without it, startup aborts before binding the singleton or initialising clients.","triggerScenarios":"Calling start() with adminAddresses unset, empty, or whitespace-only (e.g. property xxl.job.admin.addresses missing from application.properties / -Dxxl.job.admin.addresses not supplied).","commonSituations":"Profile-specific config that omits xxl.job.admin.addresses; env var not injected in a container; copy-paste of a template without filling the admin address; using addresses instead of adminAddresses setter.","solutions":["Set xxl.job.admin.addresses (or setAdminAddresses) to a non-blank value like \"http://127.0.0.1:8080/xxl-job-admin\".","Verify the property is present in the active Spring profile / environment.","Confirm the value is not an empty string from an unset environment variable."],"exampleFix":"// before\nxxlJobExecutor.setAdminAddresses(\"\");\n// after\nxxlJobExecutor.setAdminAddresses(\"http://127.0.0.1:8080/xxl-job-admin\");","handlingStrategy":"validation","validationCode":"// Validate config before start()\nString admin = config.getAdminAddresses();\nif (StringTool.isBlank(admin)) {\n    throw new IllegalStateException(\"xxl.job.admin.addresses is required\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    xxlJobExecutor.start();\n} catch (RuntimeException e) {\n    log.error(\"executor start failed: {}\", e.getMessage());\n}","preventionTips":["Centralise executor config validation in a Spring @ConfigurationProperties bean with @NotBlank.","Fail fast at boot if xxl.job.admin.addresses is unset.","Use profile-specific config to avoid missing addresses in prod."],"tags":["configuration","startup","executor","registration"],"backgroundTag":null,"analyzedSha":"e74c784f68f81fa89cb350913ef15794865d7b12","analyzedAt":"2026-08-14T04:22:43.715Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}