xuxueli/xxl-job · critical · RuntimeException

xxl-job executor adminAddresses empty.

Error message

xxl-job executor adminAddresses empty.

What it means

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.

Source

Thrown at xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java:138

    }
    public TriggerCallbackThreadHelper getTriggerCallbackThreadHelper() {
        return triggerCallbackThreadHelper;
    }

    /**
     * start
     */
    public void start() throws Exception {

        // valid enabled
        if (!enabled) {
            logger.info(">>>>>>>>>>> xxl-job executor start fail, enabled:{}", enabled);
            return;
        }

        // valid param
        if (StringTool.isBlank(adminAddresses)) {
            throw new RuntimeException("xxl-job executor adminAddresses empty.");
        }
        if (StringTool.isBlank(appname)) {
            throw new RuntimeException("xxl-job executor appname empty.");
        }
        if (StringTool.isBlank(accessToken)) {
            throw new RuntimeException("xxl-job executor accessToken empty.");
        }

        // bind instance
        xxlJobExecutor = this;

        // init logpath
        XxlJobFileAppender.initLogPath(logPath);

        // init invoker, admin-client
        initAdminBizList();

        // 1、init JobLogFileCleanThread

View on GitHub (pinned to e74c784f68)

Solutions

  1. Set xxl.job.admin.addresses (or setAdminAddresses) to a non-blank value like "http://127.0.0.1:8080/xxl-job-admin".
  2. Verify the property is present in the active Spring profile / environment.
  3. Confirm the value is not an empty string from an unset environment variable.

Example fix

// before
xxlJobExecutor.setAdminAddresses("");
// after
xxlJobExecutor.setAdminAddresses("http://127.0.0.1:8080/xxl-job-admin");
Defensive patterns

Strategy: validation

Validate before calling

// Validate config before start()
String admin = config.getAdminAddresses();
if (StringTool.isBlank(admin)) {
    throw new IllegalStateException("xxl.job.admin.addresses is required");
}

Try / catch

try {
    xxlJobExecutor.start();
} catch (RuntimeException e) {
    log.error("executor start failed: {}", e.getMessage());
}

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Related errors


AI-assisted analysis of xuxueli/xxl-job@e74c784f68 (2026-08-14). Data as JSON: /api/errors/d802a1348969f4af. Report an issue: GitHub.