首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate :应用BeanValidation关系约束时出错

Hibernate :应用BeanValidation关系约束时出错
EN

Stack Overflow用户
提问于 2016-01-18 21:38:18
回答 2查看 1.5K关注 0票数 0

当我试图配置我的会话工厂时,我得到了这个错误,根据谷歌的结果,将javaee-api放在提供的作用域中应该可以解决这个问题,但它没有:/在你的特殊情况下,看起来javax.validation接口库在测试中是不可避免的。希望它们不包含在javaee-api中。如果是这样,则添加:

代码语言:javascript
复制
 <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" );
}

线程main异常:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-01-18 21:54:35

您必须提供验证API的实现:

代码语言:javascript
复制
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.2.Final</version>
        </dependency>

您的版本可能会有所不同。

致以问候。

票数 1
EN

Stack Overflow用户

发布于 2016-01-18 21:45:06

原因:方法中的java.lang.ClassFormatError:缺少代码属性...

指示您使用的jar只包含类和方法签名,而不包含方法实现。请参阅this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34856126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档