{"record":{"id":"3d2cf91c978a35c9","repo":"jenkinsci/jenkins","slug":"no-such-job","errorCode":null,"errorMessage":"No such job '","messagePattern":"No such job '","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/hudson/cli/DeleteJobCommand.java","lineNumber":69,"sourceCode":"        return Messages.DeleteJobCommand_ShortDescription();\n    }\n\n    @Override\n    protected int run() throws Exception {\n\n        boolean errorOccurred = false;\n        final Jenkins jenkins = Jenkins.get();\n\n        final HashSet<String> hs = new HashSet<>(jobs);\n\n        for (String job_s : hs) {\n            AbstractItem job;\n\n            try {\n                job = (AbstractItem) jenkins.getItemByFullName(job_s);\n\n                if (job == null) {\n                    throw new IllegalArgumentException(\"No such job '\" + job_s + \"'\");\n                }\n\n                job.checkPermission(Item.DELETE);\n                job.delete();\n            } catch (Exception e) {\n                if (hs.size() == 1) {\n                    throw e;\n                }\n\n                final String errorMsg = job_s + \": \" + e.getMessage();\n                stderr.println(errorMsg);\n                errorOccurred = true;\n                continue;\n            }\n        }\n\n        if (errorOccurred) {\n            throw new AbortException(CLI_LISTPARAM_SUMMARY_ERROR_TEXT);","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/jenkinsci/jenkins/blob/2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc/core/src/main/java/hudson/cli/DeleteJobCommand.java#L51-L87","documentation":"`DeleteJobCommand.run()` looks up each job via `jenkins.getItemByFullName(job_s)`; if null it throws IllegalArgumentException 'No such job '<job_s>''. When a single job is passed the exception propagates directly (the loop's rethrow on hs.size()==1); when multiple jobs are passed the per-job error is printed to stderr and a summary AbortException follows.","triggerScenarios":"Running `java -jar jenkins-cli.jar delete-job <name>` where no item with full name <name> exists. With multiple jobs, the missing ones appear as stderr lines then the summary error (CLI_LISTPARAM_SUMMARY_ERROR_TEXT).","commonSituations":"Typo in the job name; job already deleted; wrong folder path for a nested job; race where the job was removed between listing and deletion.","solutions":["Verify the exact full name (including folder path) of the job, e.g. via the Jenkins UI or `java -jar jenkins-cli.jar list-jobs` / get-job.","For nested jobs, use the full path 'folder/job'.","Make deletion idempotent in scripts: check existence before deleting, or treat 'no such job' as success."],"exampleFix":"// before:\n//   java -jar jenkins-cli.jar delete-job typoJob\n//   -> IllegalArgumentException: No such job 'typoJob'\n//\n// after: confirm the real name (and folder path) first\n//   java -jar jenkins-cli.jar list-jobs\n//   java -jar jenkins-cli.jar delete-job folder/realJob","handlingStrategy":"validation","validationCode":"// Verify job exists (full name incl. folder path) before delete-job\nif (jenkins.getItemByFullName(jobName) == null) {\n    throw new IllegalArgumentException(\"No such job '\" + jobName + \"'\");\n}\n// For idempotent deletion, treat 'no such job' as success instead of failing.","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the full name (folder/job) for nested jobs when deleting.","Make deletion idempotent in scripts: ignore 'no such job' as a no-op success."],"tags":["jenkins","cli","job","delete","not-found"],"backgroundTag":null,"analyzedSha":"2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc","analyzedAt":"2026-08-14T07:07:15.274Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}