{"record":{"id":"aff96d2765337030","repo":"JetBrains/intellij-community","slug":"project-configurable-dialog-message","errorCode":"project.configurable.dialog.message","errorMessage":"Project name is required","messagePattern":"Project name is required","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java","lineNumber":123,"sourceCode":"      final String compilerOutput = getOriginalCompilerOutputUrl();\n      myUi.reset(compilerOutput);\n    }\n    finally {\n      myFreeze = false;\n    }\n\n    myContext.getDaemonAnalyzer().queueUpdate(mySettingsElement);\n  }\n\n\n  @Override\n  public void apply() throws ConfigurationException {\n    final CompilerProjectExtension compilerProjectExtension = CompilerProjectExtension.getInstance(myProject);\n    assert compilerProjectExtension != null : myProject;\n\n    final String myProjectName = myUi.getProjectName();\n    if (StringUtil.isEmptyOrSpaces(myProjectName)) {\n      throw new ConfigurationException(JavaUiBundle.message(\"project.configurable.dialog.message\"));\n    }\n\n    ApplicationManager.getApplication().runWriteAction(() -> {\n      // set the output path first so that handlers of RootsChanged event sent after JDK is set\n      // would see the updated path\n      String canonicalPath = myUi.getProjectCompilerOutput();\n      if (!canonicalPath.isEmpty()) {\n        try {\n          canonicalPath = FileUtil.resolveShortWindowsName(canonicalPath);\n        }\n        catch (IOException e) {\n          //file doesn't exist yet\n        }\n        canonicalPath = FileUtil.toSystemIndependentName(canonicalPath);\n        compilerProjectExtension.setCompilerOutputUrl(VfsUtilCore.pathToUrl(canonicalPath));\n      }\n      else {\n        compilerProjectExtension.setCompilerOutputUrl(null);","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java#L105-L141","documentation":"Thrown from ProjectConfigurable.apply() (Settings > Project) when the project name field is empty or whitespace-only. The IDE requires a non-empty project name because it feeds compiler output naming, .idea metadata, and UI titles. It surfaces as a ConfigurationException, which the Settings framework turns into a red error on the dialog without closing it.","triggerScenarios":"Opening Settings > Project, clearing the Name field, and pressing OK/Apply. Also programmatically calling ProjectConfigurable.apply() when the underlying UI component's getProjectName() returns an empty string.","commonSituations":"Accidentally deleting the project name while editing compiler output settings on the same page; UI state not fully initialized when apply() runs; templates or scripts that rename projects leaving the field blank.","solutions":["Re-enter a non-empty project name in Settings > Project and apply again","If the name appears filled but still fails, restart the IDE or re-open the Settings dialog to re-sync UI state","Check .idea/misc.xml or the project file for corruption if the name repeatedly resets to empty"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"String name = ui.getProjectName();\nif (name == null || name.isBlank()) {\n  // block apply and prompt user for a project name\n}","typeGuard":null,"tryCatchPattern":"try { configurable.apply(); } catch (ConfigurationException e) { /* 'Project name is required': focus name field */ }","preventionTips":["Always set a project name when creating projects from templates or scripts","Treat empty name as invalid in any UI binding before enabling Apply"],"tags":["intellij","settings","project-configuration","validation"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}