我正在开发一个小型应用程序,并且尝试使用Hibernate Annotations映射我的实体。我想测试一下出现此异常时一切是否正常:
Exception in thread "main" java.lang.ExceptionInInitializerError at fr.cc2i.intervention.dao.main.Main$HibernateUtil.<clinit>(Main.java:48) at fr.cc2i.intervention.dao.main.Main.test(Main.java:21) at fr.cc2i.intervention.dao.main.Main.main(Main.java:32) Caused by: java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at fr.cc2i.intervention.dao.main.Main$HibernateUtil.<clinit>(Main.java:44) ... 2 more
有人可以解释这个异常是什么吗?这是我第一次看到它。这是我的应用程序的主要内容:
package fr.cc2i.intervention.dao.main; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import fr.cc2i.intervention.dao.beans.Client; import fr.cc2i.intervention.dao.beans.Contrat; public class Main { public static void test(){ Client c = new Client(); c.setCode("123343"); c.setAdresse("fkhdhdmh"); c.setNom("dgsfhgsdfgs"); c.setPhone("53456464"); c.setContrat(new Contrat()); Session session = HibernateUtil.getSession(); session.beginTransaction(); session.save(c); session.getTransaction().commit(); } /** * @param args */ public static void main(String[] args) { Main.test(); } public static class HibernateUtil { private static final SessionFactory sessionFactory; static { try { sessionFactory = new AnnotationConfiguration() .configure().buildSessionFactory(); } catch (Throwable ex) { // Log exception! throw new ExceptionInInitializerError(ex); } } public static Session getSession() throws HibernateException { return sessionFactory.openSession(); } } }
我的hibernate配置非常简单:
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">jdbc:hsqldb:hsql://localhost</property> <property name="connection.username">sa</property> <property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.HSQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping package="fr.cc2i.intervention.dao.beans.Client" /> <mapping class="fr.cc2i.intervention.dao.beans.Contrat" /> <mapping class="fr.cc2i.intervention.dao.beans.Intervention" /> <mapping class="fr.cc2i.intervention.dao.beans.Technicien" /> </session-factory> </hibernate-configuration>
这是我正在使用的hibernateMaven依赖项:
<properties> <org.springframework.version>3.0.3.RELEASE</org.springframework.version> <hibernate.version>3.6.0.Beta1</hibernate.version></properties> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> <type>jar</type> <scope>compile</scope> </dependency>
有谁可以帮助我吗 ??
这意味着在某个时候将an interface更改为class,但是原始接口的实现者并未修改并重新编译以适应此(不兼容)更改。
interface
class
例如,考虑以下类型:
interface Fooable { void foo(); } class FooImpl implements Fooable { public void foo() { /* Do something... */ } }
现在假定Fooable被修改并重新编译,但是FooImpl是 不是 :
Fooable
FooImpl
abstract class Fooable { public abstract void foo(); }