45

I write small hibernate application and get following stacktrace:

org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
    at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:154)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:312)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
    at com.beingjavaguys.hbn.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
    at com.beingjavaguys.hbn.HibernateUtil.<clinit>(HibernateUtil.java:10)
    at crud.UserDao.addUser(UserDao.java:12)
    at com.beingjavaguys.hbn.App.main(App.java:53)
Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
...

I don't understand the reason of this mistake.

code:

       Configuration configuration = new Configuration();
        configuration.configure();
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                configuration.getProperties()).build();
        return configuration.buildSessionFactory(serviceRegistry); // exception thrown here

my pom.xml:

...
<dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.5.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>4.0.4.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.5.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
            <scope>provided</scope>
        </dependency>
         ...
     ...

I have read related topics but I really don't understand how to fix it - I don't want to roll out to hibernate 4.0 version.

How to fix it?

2 Answers2

56

Just remove the javax.validation dependency

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
</dependency>

That fixed this particular problem on my end.

Stefan Georgiev
  • 561
  • 4
  • 2
50

Hibernate Validator 5x is not compatible with validation-api 1.0.x

JPA 2.0 : Exception to use javax.validation.* package in JPA 2.0

Community
  • 1
  • 1
Hank Lapidez
  • 1,857
  • 18
  • 23
  • can we use Hibernate-validator-4.2.0.Final.jar with validation-api-1.1.0.Final.jar ? – Krishna Sundar Jan 19 '18 at 09:38
  • 1
    When using Hibernate Validator 5.x, upgrade javax.validation to 2.x - this resolved it for me. – E3G Nov 19 '18 at 15:30
  • 1
    Hibernate-Validator 5.x uses the validation-api 1.1 From Hibernate-Validator 6, it uses the validation-api 2.0 – Franz Deschler Jan 28 '19 at 07:54
  • BTW, in my case, downgrading all Hibernate Validator from v6.x to v5.x works well with validation-api 1.0.x. Thank you for the thinking direction! – MewX Apr 17 '19 at 07:06