{"record":{"id":"cbd74b57586351d4","repo":"hibernate/hibernate-orm","slug":"unable-to-load-typesafeactivator-class","errorCode":null,"errorMessage":"Unable to load TypeSafeActivator class","messagePattern":"Unable to load TypeSafeActivator class","errorType":"exception","errorClass":"HibernateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/boot/beanvalidation/BeanValidationIntegrator.java","lineNumber":189,"sourceCode":"\t *\n\t * @param modes The requested validation modes.\n\t */\n\tprivate void validateMissingBeanValidationApi(Set<ValidationMode> modes, ValidationConstraintDdlInfluence constraintInfluence) {\n\t\tif ( modes.contains( ValidationMode.CALLBACK ) ) {\n\t\t\tthrow new IntegrationException( \"Jakarta Validation API was not available, but 'callback' validation was requested\" );\n\t\t}\n\t\tif ( constraintInfluence == ValidationConstraintDdlInfluence.REQUIRED ) {\n\t\t\tthrow new IntegrationException( \"Bean Validation API was not available, but '\"\n\t\t\t\t\t+ SchemaToolingSettings.APPLY_VALIDATION_CONSTRAINTS + \"' was set to 'REQUIRED'\" );\n\t\t}\n\t}\n\n\tprivate Class<?> loadTypeSafeActivatorClass(ClassLoaderService classLoaderService) {\n\t\ttry {\n\t\t\treturn classLoaderService.classForName( ACTIVATOR_CLASS_NAME );\n\t\t}\n\t\tcatch (Exception e) {\n\t\t\tthrow new HibernateException( \"Unable to load TypeSafeActivator class\", e );\n\t\t}\n\t}\n\n\tprivate record ActivationContextImpl(\n\t\t\tSet<ValidationMode> modes,\n\t\t\tValidationConstraintDdlInfluence constraintInfluence,\n\t\t\tMetadata metadata,\n\t\t\tSessionFactoryImplementor sessionFactory,\n\t\t\tSessionFactoryServiceRegistry serviceRegistry)\n\t\t\t\timplements ActivationContext {\n\n\t\t@Override\n\t\tpublic Set<ValidationMode> getValidationModes() {\n\t\t\treturn modes;\n\t\t}\n\n\t\t@Override\n\t\tpublic Metadata getMetadata() {","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/boot/beanvalidation/BeanValidationIntegrator.java#L171-L207","documentation":"The Bean Validation API was detectable, but ClassLoaderService.classForName for the internal TypeSafeActivator failed and was wrapped in this HibernateException. Typically the API is only partially present — some jakarta.validation classes are missing — so loading the activator class, which statically references ValidatorFactory, dies inside the classloader.","triggerScenarios":"A classpath that contains jakarta.validation artifacts only partially (split packages across javax and jakarta jars, partial shading, an API jar of a different minor version than hibernate-core links against) while validation integration is being activated.","commonSituations":"Shaded/fat jars including only part of the API; ProGuard/minimization stripping 'unused' classes; mixed javax.validation:validation-api 2.x alongside jakarta.validation-api 3.x.","solutions":["Replace partial/overlapping validation jars with the exact jakarta.validation-api version your hibernate-core release requires","Find and remove duplicate or split packages spanning javax and jakarta artifacts","If validation was never intended, set validation mode NONE before the SessionFactory is built"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// verify the validation API is complete, not just present\nstatic void assertValidationApiComplete() {\n    for (String cn : new String[] {\n            \"jakarta.validation.Validation\",\n            \"jakarta.validation.ValidatorFactory\",\n            \"jakarta.validation.ConstraintViolation\"}) {\n        try { Class.forName(cn); }\n        catch (ClassNotFoundException e) {\n            throw new IllegalStateException(\"Incomplete/partial jakarta.validation API on classpath\", e);\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    sessionFactory = new Configuration().buildSessionFactory();\n} catch (HibernateException e) {\n    if (e.getMessage().contains(\"Unable to load TypeSafeActivator class\"))\n        throw new IllegalStateException(\"Partial validation API detected; replace with the exact matching jar\", e);\n    throw e;\n}","preventionTips":["Use exactly the validation-api artifact version your Hibernate documents","Avoid shading/minimization that can split validation packages"],"tags":["hibernate","bean-validation","classnotfound","classpath","split-packages"],"backgroundTag":"class-not-found","analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}