2013-09-09 4 views
3

Чтобы узнать о спящем режиме, я пишу два примера для практики. Тем не менее, оба они имеют такую ​​же ошибку следующим образом:Ошибка в простом примере Hibernate Уровень начального уровня

Failed to create sessionFactory object.java.lang.NoClassDefFoundError: javax/transaction/SystemException Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.NoClassDefFoundError: javax/transaction/SystemException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jboss.logging.Logger.getMessageLogger(Logger.java:2248) at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) at org.hibernate.cfg.Configuration.(Configuration.java:184) at com.example.ManageEmployee.main(ManageEmployee.java:17)

В принципе, я пишу POJO первый, и используя затмение генерирует hbm.xml. После этого я пишу основную функцию для управления базой данных. Я пробовал дважды, но у меня такая же проблема.

Может кто-нибудь дать мне совет для решения этой проблемы? До этого использование JDBC создает проект, но это слишком сложно. Поэтому мне нужно учиться спящим. Спасибо.

Дополнение (подробно в этом гибернации примере проекта):

  1. Мои проекта Eclipse Имя: HibernateExa
  2. hibernate.cfg.xml:

    <session-factory> 
    
        <!-- hibernate dialect --> 
    
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
        <property name="hibernate.connection.password">hibernateTest</property> 
    
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatetest;</property> 
        <property name="hibernate.connection.username">hibernater</property> 
        <property name="hibernate.default_schema">hibernatetest</property> 
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    
        <!-- Automatic schema creation(begin) --> 
        <property name="hibernate.hbm2ddl.auto">create</property> 
        <!-- Simple memory-only cache --> 
        <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property> 
        <!-- Enable Hibernate's automatic session context management --> 
        <property name="current_session_context_class">thread</property> 
    
        <!-- mapping files with external dependencies --> 
        <mapping resource="com/sample/Person.hbm.xml"/> 
    
    
    </session-factory> 
    

  3. My POJO is Person.java. Использование eclipse генерирует Person.hbm.xml.

  4. Проект содержит основные функции: TestPerson.java

    государственной статической силы основных (String []) {ARGS

    Session session = SessionFactoryUtil.getSessionFactory().getCurrentSession(); 
    
        session.beginTransaction(); 
    
        createPerson(session); 
        queryPerson(session); 
    
    } 
    
    public static void createPerson(Session session){ 
        Person person = new Person(); 
    
        person.setName("Jack"); 
        person.setSurname("Yu"); 
        person.setAddress("White House"); 
    
        session.save(person); 
    } 
    
    private static void queryPerson(Session session){ 
        Query query = session.createQuery("from person"); 
        List<Person> list = new ArrayList<Person>(); 
        list = query.list(); 
        java.util.Iterator<Person> iter = list.iterator(); 
    
        while(iter.hasNext()){ 
         Person person = iter.next(); 
         System.out.println("Person: \"" + person.getName() + "\", "+ person.getSurname() + "\", " 
           + person.getAddress()); 
        } 
    
        session.getTransaction().commit(); 
    } 
    
  5. Вот информация об ошибке:

    создание Initial SessionFactory не удалось. java.lang.NoClassDefFoundError: javax/сохранение/EntityListeners Исключение в потоке "основного" java.lang.ExceptionInInitializerError в com.sample.SessionFactoryUtil (SessionFactoryUtil.java:17) на com.sample.TestPerson.main (TestPerson.. Java: 14) Вызванный: java.lang.NoClassDefFoundError: javax/сохранение/EntityListeners на org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults (JPAMetadataProvider.java:97) в org.hibernate.annotations.common .reflection.java.JavaReflectionManager.getDefaults (JavaReflectionManager.java:226) at org.hibernate.cfg.Configuration.secondPassCompile (Configuration.java:1331) at org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1756) at o rg.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1840) at com.sample.SessionFactoryUtil. (SessionFactoryUtil.java:13) ... 1 еще Вызвано: java.lang.ClassNotFoundException: javax.persistence .EntityListeners в java.net.URLClassLoader $ 1.Run (Unknown Source) в java.net.URLClassLoader $ 1.Run (Unknown Source) на java.security.AccessController.doPrivileged (Native Method) в java.net.URLClassLoader .findClass (Неизвестный источник) at java.lang.ClassLoader.loadClass (Неизвестный источник) at sun.misc.Launcher $ AppClassLoader.loadClass (Неизвестный источник) в java.lang.ClassLoader.loadClass (Unknown Source) ... 7 более

В принципе, этот пример может помочь мне на практике, как с помощью спящего режима. Тем не менее, у меня возникла проблема с самого начала, которая создает проект.

Надеюсь, я смог бы решить эту проблему в ближайшее время. Пожалуйста, совет, спасибо.

+0

Вам не хватает jta.jar из библиотек проектов или зависимостей в Eclipse. (Или другой эквивалентный jar, который содержит недостающий класс.) – madth3

+0

Спасибо madth3, теперь я добавляю jta, но все еще есть эта проблема. – Eric

+0

Если вы добавили JTA правильно, у вас не было бы такой же точной проблемы. Пожалуйста, добавьте информацию о проекте Eclipse и как его выполнить. – madth3

ответ

6

Пожалуйста, убедитесь, что у вас есть все это баночке файлов в папке Lib:

lib/antlr.jar 
lib/cglib.jar 
lib/asm.jar 
lib/commons-collections.jar 
lib/commons-logging.jar 
lib/jta.jar 
lib/dom4j.jar 
lib/log4j.jar 
lib/hibernate3.jar 
+0

Привет, Фахиме, спасибо за ваше предложение. Я загружаю hibernate-4.3.0 и получаю требуемый файл jar, который содержит: antlr-2.7.7 Авро-1.6.3- dom4j 1.6.1 Hibernate-Викисклад аннотации-4.0.2 Hibernate-ядро-4.2.2- джексон ядро-ASL-1.9.2- джексон картостроитель-ASL-1.9. 2 Javassist-3.15.0-Г.А. JBoss-каротажа 3.1.0 JTA-1,1- Lucene ядро-3.6.2 paranamer-2,3 SLF4J-апи-1.6.1- мгновенным Java-1.0.4.1 Но все равно такая же проблема. – Eric

1

Проблема решена! Спасибо за все советы.

Поэтому я обобщаю вопрос и даю решение.

ОШИБКА: начальное создание SessionFactory не удалось. java.lang.NoClassDefFoundError. Некоторые файлы jar пропущены.

Для того, чтобы установить спящий режим проекта, вот список для файлов .jar:

enter image description here

  1. Исключение в потоке «главный» org.hibernate.hql.ast.QuerySyntaxException: человек не отображается [от человека] Поскольку запрос на спящий режим основан на объекте, от человека должен быть от Person.
  2. Правильное подключение URL:

    JDBC: MySQL: // локальный: 3306/hibernatetest useUnicode = истинный & characterEncoding = GBK

  3. В БД, то идентификатор INT. Однако в Person.hbm.xml я меняю тип id на «long». Таким образом, ожидается ожидаемый результат.

0

Добавить эту зависимость в вашем pom.xml

<dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>jta</artifactId> 
    <version>1.1</version> 
</dependency> 

Сделать mvn clean install и развертывания.

Другой способ:
Скачать баночка: Project -> правая кнопка мыши -> создать путь -> добавить внешний баночка

Project -> правая кнопка мыши -> Свойства -> Развертывание сборка -> добавить -> добавить из записей пути сборки (добавить эту банку)

Теперь перестройте проект.

Надеюсь, это поможет.

Смежные вопросы