JetBrains/intellij-community · error · ConfigurationException

Enter file location

Error message

Enter {0} file location

What it means

Thrown by NamePathComponent.validateNameAndPath() when the project directory path field is empty or whitespace-only. Without a location the wizard cannot create the project directory or place the project file, so validation prompts for the location.

Solutions

  1. Enter or restore the project location path in the wizard
  2. Use the '...' browse button to re-select a directory so the field is repopulated canonically
  3. In plugin code, always call component.setPath(baseDir + File.separator + name) before validate()

Example fix

// before
component.setNameValue("my-app");
// path field empty
component.validateNameAndPath(context, true); // ConfigurationException: enter file location

// after
component.setNameValue("my-app");
component.setPath("/home/user/IdeaProjects/my-app");
component.validateNameAndPath(context, true);
Defensive patterns

Strategy: validation

Validate before calling

if (component.getPath() == null || component.getPath().trim().isEmpty()) {
  component.setPath(baseDir + File.separator + suggestedName);
}
component.validateNameAndPath(context, true);

Prevention

When it happens

Trigger: Calling validateNameAndPath(context, defaultFormat) while getPath() returns empty — the path field was cleared or never initialized (headless reuse of the component without setPath).

Common situations: User wipes the location field in New Project dialog; custom wizard step embedding NamePathComponent does not pre-set path from the previously chosen directory; drag-select accidentally deletes the path text.

Related errors


AI-assisted analysis of JetBrains/intellij-community@be881553f2 (2026-08-14). Data as JSON: /api/errors/3e0da951799bae69. Report an issue: GitHub.

Appendix: source

Thrown at java/idea-ui/src/com/intellij/ide/util/projectWizard/NamePathComponent.java:157

    String baseDir = context.getProjectFileDirectory();
    String projectName = context.getProjectName();
    String initialProjectName = projectName != null ? projectName : ProjectWizardUtil.findNonExistingFileName(baseDir, "untitled", "");
    component.setPath(projectName == null ? (baseDir + File.separator + initialProjectName) : baseDir);
    component.setNameValue(initialProjectName);
    component.getNameComponent().select(0, initialProjectName.length());
    return component;
  }

  public boolean validateNameAndPath(WizardContext context, boolean defaultFormat) throws ConfigurationException {
    String name = getNameValue();
    if (StringUtil.isEmptyOrSpaces(name)) {
      ApplicationNamesInfo info = ApplicationNamesInfo.getInstance();
      throw new ConfigurationException(JavaUiBundle.message("prompt.new.project.file.name", info.getFullProductName(), context.getPresentationName()));
    }

    String projectDirectoryPath = getPath();
    if (StringUtil.isEmptyOrSpaces(projectDirectoryPath)) {
      throw new ConfigurationException(JavaUiBundle.message("prompt.enter.project.file.location", context.getPresentationName()));
    }
    if (myShouldBeAbsolute && !new File(projectDirectoryPath).isAbsolute()) {
      throw new ConfigurationException(JavaUiBundle.message("file.location.should.be.absolute", StringUtil.capitalize(context.getPresentationName())));
    }

    boolean shouldPromptCreation = isPathChangedByUser();
    String message = JavaUiBundle.message("directory.project.file.directory", context.getPresentationName());
    if (!ProjectWizardUtil.createDirectoryIfNotExists(message, projectDirectoryPath, shouldPromptCreation)) {
      return false;
    }

    File projectDirectory = new File(projectDirectoryPath);
    if (projectDirectory.exists() && !projectDirectory.canWrite()) {
      throw new ConfigurationException(JavaUiBundle.message("project.directory.is.not.writable", projectDirectoryPath));
    }
    for (Project p : ProjectManager.getInstance().getOpenProjects()) {
      if (ProjectUtil.isSameProject(projectDirectory.toPath(), p)) {
        throw new ConfigurationException(JavaUiBundle.message("project.directory.is.already.taken", projectDirectoryPath, p.getName()));

View on GitHub (pinned to be881553f2)