Я пытаюсь настроить Hibernate 4 в проекте Maven. Это не работает, и это сводит меня с ума.Hibernate 4: ViolatedConstraintNameExtracter exception
Я получаю это исключение:
java.lang.NoClassDefFoundError: org/hibernate/exception/ViolatedConstraintNameExtracter
Эти зависимости объявлены в файле pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
<dependency>
<groupId>org.hibernate.dialect</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.0</version>
<scope>provided</scope>
</dependency>
Это мой файл конфигурации Hibernate:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.sqlite.JDBC</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:sqlite:test.db</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
И это «аварийный» код:
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
У меня есть только тестовая модель под названием «Пользователь» и украшена аннотациями Hibernate.
Можете ли вы мне помочь? Приветствия.
UPDATE: Stack след
Initial SessionFactory creation failedjava.lang.NoClassDefFoundError: org/hibernate/exception/ViolatedConstraintNameExtracter
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.matteopacini.RestaurantManager.HibernateUtil.<clinit>(HibernateUtil.java:27)
at com.matteopacini.RestaurantManager.App.main(App.java:14)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/exception/ViolatedConstraintNameExtracter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:242)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor (StrategySelectorImpl.java:125)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155)
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at com.matteopacini.RestaurantManager.HibernateUtil.<clinit>(HibernateUtil.java:21)
... 1 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.exception.ViolatedConstraintNameExtracter
at java.net.URLClassLoader$1.run(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)
... 16 more
Что трассировки стека? Вы уверены, что sqlite-dialect, который я не нашел на Maven central, совместим с недавним Hibernate 4.3.1? Не найденный класс находится в org.hibernate.exception.spi в Hibernate 4, но был в org.hibernate.exception в Hibernate 3.6. –
Я отправил трассировку стека. Репозиторий sqlite-dialect: https://github.com/gwenn/sqlite-dialect. Я не знаю, совместим ли это, но это единственный обновленный. –
Вам не хватает jar в пути к классам или имеет 2 разных версии. –