JetBrains/intellij-community · error · ConfigurationException
''{0}'' does not exist
Error message
''{0}'' does not exist What it means
Thrown by IntroduceParameterObjectDialog.canRun() (IntroduceParameterObjectDialog.java:507) in the 'Use existing class' branch when the qualified name is syntactically valid but JavaPsiFacade.findClass(name, GlobalSearchScope.allScope(project)) returns null — no such class resolvable on the project classpath (production + library sources). The refactoring needs a real class to add fields/setters to, so an unresolvable target aborts.
Source
Thrown at java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectDialog.java:507
if (className.isEmpty() || !nameHelper.isIdentifier(className)) {
throw new ConfigurationException(
JavaRefactoringBundle.message("introduce.parameter.object.error.invalid.parameter.class.name", className));
}
final String packageName = getPackageName();
if (packageName.isEmpty() || !nameHelper.isQualifiedName(packageName)) {
throw new ConfigurationException(
JavaRefactoringBundle.message("introduce.parameter.object.error.invalid.parameter.class.package.name", packageName));
}
}
else {
final String className = getExistingClassName();
if (className.isEmpty() || !nameHelper.isQualifiedName(className)) {
throw new ConfigurationException(
JavaRefactoringBundle.message("introduce.parameter.object.error.invalid.qualified.parameter.class.name", className));
}
if (JavaPsiFacade.getInstance(getProject()).findClass(className, GlobalSearchScope.allScope(getProject())) == null) {
throw new ConfigurationException(JavaRefactoringBundle.message("introduce.parameter.object.error.class.does.not.exist", className));
}
}
}
private @NotNull String getInnerClassName() {
return myInnerClassNameTextField.getText().trim();
}
public @NotNull String getPackageName() {
return packageTextField.getText().trim();
}
public @NotNull String getExistingClassName() {
return existingClassField.getText().trim();
}
public @NotNull String getClassName() {
return classNameField.getText().trim();View on GitHub (pinned to be881553f2)
Solutions
- Fix the name/package typo — use the class browser (...) to pick the class instead of typing.
- Add the module/library containing the class to the current module's dependencies (File | Project Structure | Modules | Dependencies).
- If the class was just created or pulled, wait for indexing to finish or File | Invalidate Caches and restart to refresh the index.
- Verify with JavaPsiFacade.getInstance(project).findClass(fqn, GlobalSearchScope.allScope(project)) != null before confirming.
Example fix
// before
JavaPsiFacade.getInstance(project)
.findClass("com.acme.paramz.RequestParams", GlobalSearchScope.allScope(project)); // null -> error
// after
PsiClass cls = JavaPsiFacade.getInstance(project)
.findClass("com.acme.params.RequestParams", GlobalSearchScope.allScope(project));
if (cls == null) { /* fix dependency or name before running refactoring */ } Defensive patterns
Strategy: validation
Validate before calling
String fqn = getExistingClassName().trim();
PsiClass existing = JavaPsiFacade.getInstance(project)
.findClass(fqn, GlobalSearchScope.allScope(project));
if (existing == null) {
// resolve failure: fix dependencies/index before running Introduce Parameter Object
} Type guard
boolean resolves(String fqn, Project project) {
if (fqn == null || fqn.isEmpty()) return false;
if (!PsiNameHelper.getInstance(project).isQualifiedName(fqn)) return false;
return JavaPsiFacade.getInstance(project)
.findClass(fqn, GlobalSearchScope.allScope(project)) != null;
} Prevention
- Add the target class's module as a dependency before pointing the refactoring at it.
- After large VCS updates, let the index settle before cross-module refactorings.
When it happens
Trigger: Typing a qualified name of a class that is not on the module dependency graph: wrong package prefix, class lives in a module not a dependency of the current one, a library without sources resolved only in a narrower scope, or a simple typo.
Common situations: Splitting a multi-module project and the parameter-object class sits in another module; class exists only in test sources while searched scope resolves production; third-party class whose artifact was removed after a dependency cleanup; stale index after big VCS updates.
Related errors
- No target class for the instance method is found: method par
- move.classes.destination.class.not.found.message
- type.migration.dialog.message.invalid.type
- Cannot create package '{0}' in source folder {1}
- Method {0} is not static
AI-assisted analysis of JetBrains/intellij-community@be881553f2 (2026-08-14).
Data as JSON: /api/errors/6cafbc428723dcbc.
Report an issue: GitHub.