{"record":{"id":"33a3b1a55cbbd7c0","repo":"languagetool-org/languagetool","slug":"could-not-find-filter-class-classname-make","errorCode":null,"errorMessage":"Could not find filter class: '${className}' - make sure to use a fully qualified class name like 'org.languagetool.rules.MyFilter'","messagePattern":"Could not find filter class: '(.+?)' - make sure to use a fully qualified class name like 'org\\.languagetool\\.rules\\.MyFilter'","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"languagetool-core/src/main/java/org/languagetool/rules/patterns/RegexRuleFilterCreator.java","lineNumber":57,"sourceCode":"        throw new RuntimeException(\"Constructor of filter class '\"\n                + className + \"' must have exactly one constructor, but it has \" + constructors.length);\n      }\n      Constructor<?> constructor = constructors[0];\n      try {\n        if (constructor.getParameterTypes().length != 0) {\n          throw new RuntimeException(\"Constructor of filter class '\" + className + \"' must not have arguments: \" + constructor);\n        }\n        Object filter = constructor.newInstance();\n        if (filter instanceof RegexRuleFilter) {\n          return (RegexRuleFilter) filter;\n        } else {\n          throw new RuntimeException(\"Filter class '\" + className + \"' must implement interface \" + RegexRuleFilter.class.getSimpleName());\n        }\n      } catch (Exception e) {\n        throw new RuntimeException(\"Could not create filter class using constructor \" + constructor, e);\n      }\n    } catch (ClassNotFoundException e) {\n      throw new RuntimeException(\"Could not find filter class: '\"\n              + className + \"' - make sure to use a fully qualified class name like 'org.languagetool.rules.MyFilter'\");\n    }\n  }\n \n}\n","sourceCodeStart":39,"sourceCodeEnd":63,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-core/src/main/java/org/languagetool/rules/patterns/RegexRuleFilterCreator.java#L39-L63","documentation":"Class-loading failure in RegexRuleFilterCreator.getFilter: JLanguageTool's class broker could not load the class name given in the rule's <filter> attribute, usually because the name is misspelled or not fully qualified. The input at fault is the class name string in the XML rule.","triggerScenarios":"Thrown at languagetool-core/src/main/java/org/languagetool/rules/patterns/RegexRuleFilterCreator.java:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a fully qualified class name in the <filter class=\"...\"> attribute, e.g. org.languagetool.rules.MyFilter","Verify the filter class actually exists on the classpath and the spelling matches exactly"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}