2010-04-18 5 views
9

Я создаю настольное приложение с использованием hibernate 3.5 & JPA 2.0.JPA 2.0, hibernate 3.5, jars & persistence.xml location

У меня есть 2 баночки,

Либерал, который определяет каждый объект и DAO, пакеты выглядит следующим образом:

org.my.package.models 
org.my.package.models.dao 
org.my.package.models.utils 

В org.my.package.utils я определил мой спящий служебный класс для получение EM & экземпляров EMF, что означает, что Lib связан с именем единицы сохранения, но это не проблема сейчас (во всяком случае, вы можете порекомендовать мне лучший способ управления, что)

вторая баночка построена следующим образом:

org.my.package.app

META-INF определяются в корневом каталоге проекта, который означает, что в моем банке я могу найти эти каталоги непосредственно в корневом каталоге:

META-INF/ 
META-INF/persistence.xml 
org/ 
org/my/ 
... 
org/my/package/app/Main.class 

Когда я запускать приложение, hibernate не удалось найти persistence.xml, он выдает исключение, подобное тому, что «пакет или класс для PersistenceUnitName не найден».

SLF4J: The requested version 1.5.11 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8] 
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details. 
3 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.0-Final 
25 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.0-Final 
28 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 
33 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 
41 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 
153 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final 
160 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.5.0-Final 
Exception in thread "main" java.lang.ExceptionInInitializerError 
     at Main.main(Main.java:171) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: PMMPU] class or package not found 
     at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1316) 
     at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1094) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:981) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:275) 
     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:359) 
     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48) 
     at dil.tal.polymarmots.utils.HibernateUtil.getEmf(HibernateUtil.java:45) 
     at dil.tal.polymarmots.utils.HibernateUtil.getEm(HibernateUtil.java:54) 
     at dil.tal.polymarmots.utils.HibernateUtil.getMotDAOImpl(HibernateUtil.java:115) 
     at dil.tal.polymarmots.models.Mot.<clinit>(Mot.java:30) 
     ... 1 more 
Caused by: java.lang.ClassNotFoundException: model.Extrait 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:247) 
     at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170) 
     at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1232) 
     at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1304) 
     ... 11 more 

Я гугле немного о the problem, но я не могу получить право исходный код организации.

Любая помощь?

+0

Вы уверены, что сообщение означает, что файл не найден, а не проблема в файле? – Bozho

+1

Опубликовать ** точное ** исключение (и трассировку) и ваше persistence.xml –

+1

http://techblog.bozho.net/?p=155 – Bozho

ответ

9

класс или пакет не найден сообщение самоуправления объяснения: класс или пакет не найден - не persistence.xml - как это было предложено причиной исключения:

Caused by: java.lang.ClassNotFoundException: model.Extrait 

model.Extrait лица не отражает отображаемую упаковку, но она, скорее всего, объявлена ​​в вашем persistence.xml (которую вы не показываете), но не присутствует в пути к классу.

+1

стыдно за меня, это действительно глупо. – amirouche

+3

Эта ошибка помогла мне понять, что я не понял выход Java Exceptions ... – amirouche

+2

@phmr Мы все учимся на ошибках :) Некоторые называют последовательность ошибок «опытом». –

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