{"record":{"id":"14245438a0e09ef3","repo":"jenkinsci/jenkins","slug":"no-view-named-s-inside-view-s","errorCode":null,"errorMessage":"No view named %s inside view %s","messagePattern":"No view named (.+?) inside view (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java","lineNumber":105,"sourceCode":"     * @throws AccessDeniedException\n     *      If user doesn't have a READ permission for the view\n     * @since 1.618\n     */\n    @CheckForNull\n    public View getView(final String name) {\n\n        ViewGroup group = Jenkins.get();\n        View view = null;\n\n        final StringTokenizer tok = new StringTokenizer(name, \"/\");\n        while (tok.hasMoreTokens()) {\n\n            String viewName = tok.nextToken();\n\n            view = group.getView(viewName);\n            if (view == null) {\n                group.checkPermission(View.READ);\n                throw new IllegalArgumentException(String.format(\n                        \"No view named %s inside view %s\",\n                        viewName, group.getDisplayName()\n                ));\n            }\n            view.checkPermission(View.READ);\n            if (view instanceof ViewGroup) {\n                group = (ViewGroup) view;\n            } else if (tok.hasMoreTokens()) {\n                throw new IllegalStateException(view.getViewName() + \" view can not contain views\");\n            }\n        }\n\n        return view;\n    }\n\n    @Override\n    public String getDefaultMetaVariable() {\n","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/jenkinsci/jenkins/blob/2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc/core/src/main/java/hudson/cli/handlers/ViewOptionHandler.java#L87-L123","documentation":"IllegalArgumentException from ViewOptionHandler when parsing a slash-separated view path and ViewGroup.getView(viewName) returns null for some segment. View.READ is checked on the group before throwing, so a missing-view and a no-read-permission case can look alike.","triggerScenarios":"A CLI command taking a view option (`-v a/b`) where segment `a` or `b` does not exist in its parent ViewGroup.","commonSituations":"Typo in a view name; wrong nesting path; view deleted; insufficient READ permission on the containing group.","solutions":["List views under the group and copy the exact name.","Verify each path segment exists and is traversable.","Run as a user with View.READ on the group."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"View v = group.getView(viewName);\nif (v == null) {\n    group.checkPermission(View.READ);\n    throw new IllegalArgumentException(\"No view '\" + viewName + \"' in \" + group.getDisplayName());\n}","typeGuard":null,"tryCatchPattern":"catch (IllegalArgumentException e) { /* view segment missing */ }","preventionTips":["Enumerate views under the group before addressing them.","Run with READ on the containing group."],"tags":["cli","view","not-found","permissions"],"backgroundTag":null,"analyzedSha":"2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc","analyzedAt":"2026-08-14T07:07:15.274Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}