Anand Pandey
Anand Pandey

Reputation: 393

Hibernate : Error applying BeanValidation relational constraints

I'm getting this error when I'm trying to configure my session factory, according to google's results putting javaee-api in provided scope should solve the problem, but it does not :/ In your special case it looks like that javax.validation interface libary is not aviable in the tests. May they are not incuded in javaee-api. If this is the case, then add:

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

full pom.xml [code]
<dependencies>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
        <groupId>tele.crm</groupId>
        <artifactId>crm-service-utils</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.8.3</version>
    </dependency>
    <dependency>
        <groupId>tele.crm</groupId>
        <artifactId>crm-billing-client</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.4.3</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.36</version>
    </dependency>
</dependencies>

java Code:

 public static void main( String[] args )
{
    show();
}

public static void show()
{
    Session session = null;
    Transaction transaction = null;
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    try
    {
        System.out.println("aaa"+sessionFactory);
        session = sessionFactory.openSession();
        System.out.println(session);
        transaction = session.beginTransaction();
        CrmUserPojo e = new CrmUserPojo();
        e.setUserId( "ASDF" );
        e.setFirstName("kumar");
        session.save( e );
        transaction.commit();
    }
    catch ( Exception ss )
    {
        transaction.rollback();
    }
    finally
    {
        session.close();
    }
    System.out.println( "Sucesfully Saved" );
}

Exception in thread "main" :

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.np.tele.crm.utils.HibernateUtil.<clinit>(HibernateUtil.java:29)
    at com.np.test.Emp.show(Emp.java:25)
    at com.np.test.Emp.main(Emp.java:15)
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138)
    at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:115)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:294)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
    at com.np.tele.crm.utils.HibernateUtil.<clinit>(HibernateUtil.java:23)
    ... 2 more

Upvotes: 0

Views: 1616

Answers (2)

eltabo
eltabo

Reputation: 3807

You must provide an implementation of validation API :

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.2.Final</version>
        </dependency>

Your version may vary.

Regards.

Upvotes: 1

Abdelhak
Abdelhak

Reputation: 8387

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that ...

Indicates that you use an jar that contains only the class and method signatures but not the method implementation. See this

Upvotes: 0

Related Questions