Estou obtendo a seguinte mensagem de erro ao utilizar a JPA com o Hibernate:
18/12/2007 10:45:03 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.0.GA
18/12/2007 10:45:03 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
18/12/2007 10:45:03 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
18/12/2007 10:45:03 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
18/12/2007 10:45:03 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
18/12/2007 10:45:04 org.hibernate.ejb.Version <clinit>
INFO: Hibernate EntityManager 3.3.1.GA
Exception in thread "main" java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile
at org.hibernate.ejb.packaging.JarVisitor.checkAnnotationMatching(JarVisitor.java:332)
at org.hibernate.ejb.packaging.JarVisitor.executeJavaElementFilter(JarVisitor.java:298)
at org.hibernate.ejb.packaging.JarVisitor.addElement(JarVisitor.java:259)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:54)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:62)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:62)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.doProcessElements(ExplodedJarVisitor.java:45)
at org.hibernate.ejb.packaging.JarVisitor.getMatchingEntries(JarVisitor.java:241)
at org.hibernate.ejb.Ejb3Configuration.addMetadataFromVisitor(Ejb3Configuration.java:271)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at contacts.core.persistence.util.JPAUtil.<clinit>(JPAUtil.java:23)
at contacts.core.persistence.impl.HSQLDB.configure(HSQLDB.java:26)
at Test.main(Test.java:10)
Alguém já passou por isso ou sabem oq pode ser?
Já utilizei a busca do GUJ em busca das palavras chave “javassist/bytecode/ClassFile” e não obtive sucesso.
Apelando para o “oráculo” (google) obtive informações que esse erro está ligado com a forma como os bytecodes estão sendo manipulados, ou seja é algo bem “embaixo”, mas n faço ideia do que seja.
Meu persistence.xml se encontra na pasta META-INF dentro da pasta src e está com a seguinte estrutura.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="contacts">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>contacts.core.common.BaseEntity</class>
<class>contacts.core.contact.api.Contact</class>
<class>contacts.core.contact.api.Group</class>
<class>contacts.core.contact.api.Phone</class>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.connection.driver_class" value="org.hsql.jdbcDriver" />
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/contacts" />
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.connection.password" value="" />
</properties>
</persistence-unit>
</persistence>
Vale lembrar que essa aplicação é desktop.
Desde já agradeço.