Boa tarde, estou tentando realizar o exercicio 14.8 da apostila da Caelum Web, porém ao dar Run Java Application, ele me volta o seguinte erro:
Exception in thread “main” java.lang.NoClassDefFoundError: org/hibernate/cfg/SettingsFactory
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.caelum.tarefas.jpa.GeraTabelas.main(GeraTabelas.java:9)
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.SettingsFactory
at java.net.URLClassLoader.findClass(Unknown Source)
O meu arquivo persistence.xml está assim:
< persistence-unit name="tarefas">
< !-- provedor/implementacao do JPA -->
< provider>org.hibernate.ejb.HibernatePersistence</provider>
< !-- entidade mapeada -->
< class>br.com.caelum.tarefas.modelo.Tarefa</class>
< properties>
< !-- dados da conexao -->
< property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
< property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost/fj21" />
< property name="javax.persistence.jdbc.user"
value="root" />
< property name="javax.persistence.jdbc.password"
value=" " />
< !-- propriedades do hibernate -->
< property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5InnoDBDialect" />
< property name="hibernate.show_sql" value="true" />
< property name="hibernate.format_sql" value="true" />
< !-- atualiza o banco, gera as tabelas se for preciso -->
< property name="hibernate.hbm2ddl.auto" value="update" />
< /properties>
< /persistence-unit>
< /persistence>
</code>
<br/>
Minha classe GeraTabelas está assim:
<code>
package br.com.caelum.tarefas.jpa;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("tarefas");
factory.close();
}
}
</code>
Minha classe Tarefa está assim:
<code>
package br.com.caelum.tarefas.modelo;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.DateTimeFormat;
import com.sun.istack.internal.NotNull;
@Entity
public class Tarefa {
@Id
@GeneratedValue
private Long id;
@NotNull @Size(min=5)
private String descricao;
private boolean finalizado;
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataFinalizacao;
…
Meus jars
são os seguintes:

E o meu arquivo persistence.xml está na pasta src/META-INF Ja tentei vários métodos para arrumar, nos vários posts que tinham aqui , mas conforme arrumava aparecia um novo erro, e esse foi o ultimo.
Poderiam me ajudar por favor?
1 curtida
Eu tirei o jar HIBERNATE-ENTITYMANAGER que está ali emcima, e coloquei o
HIBERNATE-ENTITYMANAGER-5.0.1.Final
E agora aparece o seguinte erro:
Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named tarefas
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.caelum.tarefas.jpa.GeraTabelas.main(GeraTabelas.java:9)
1 curtida
A partir da versão 5.x.x o o hibernate-entitymanager já está inserida no hibernate-core, e em breve será retirada no hibernate 6 .
não há necessidade de inseri-la o seu jar.
agora no seu persistence.xml troque isso :
< !-- provedor/implementacao do JPA -->
< provider>org.hibernate.ejb.HibernatePersistence</provider>
por isso :
< !-- provedor/implementacao do JPA -->
< provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
{ }s.
1 curtida
Oi Daniel, obrigado novamente por estar tentando me ajudar.
Retirei o entitymanager, e modifiquei o codigo do persistence como voce me passou, porém deu o seguinte erro ao tentar compilar:
12:17:51,561 INFO LogHelper:31 - HHH000204: Processing PersistenceUnitInfo [
name: tarefas
…]
Exception in thread “main” java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator could not be instantiated
at java.util.ServiceLoader.fail(Unknown Source)
at java.util.ServiceLoader.access$100(Unknown Source)
at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)
at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
…
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.index.CorruptIndexException
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
Ai dei uma pesquisada , e achei algo que falava sobre a falta do .jar > apache lucene.
Coloquei o mesmo no lib e apareceu outro erro:
12:20:52,000 INFO Environment:213 - HHH000206: hibernate.properties not found
12:20:52,078 INFO Version:66 - HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Exception in thread “main” java.lang.NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext.(Lorg/hibernate/boot/spi/ClassLoaderAccess;)V
at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.(JPAMetadataProvider.java:66)
…
Mais uma vez obrigado.
1 curtida
Pela imagem da sua pasta lib tem JARS demais ali.
vamos começar pelo inicio. apague todos o jar dentro desta pasta / faz backup do mesmo.
com a pasta vazia , você ira somente adicionar o jar do Hibernate que fica na pasta REQUIRED
e o jar do banco de dados , depois testa o seu projeto.
{ }ms
1 curtida
Então mano,eu refiz todo o exercicio, exclui os jars que tinha baixado e colocado no Lib e fiz tudo o que voce disse, baixei os jars no site do hibernate , o pacote hibernate-release-5.1.3.Final.
Copiei todos os jars da pasta Required
Ficou assim:
Os outros jars são do Spring MVC e pra configuração DataSource
Mas aparece o erro :
Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named tarefas
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.caelum.tarefas.jpa.GeraTabelas.main(GeraTabelas.java:9)
1 curtida
Como você baixou outra versão do Hibernate, não tenho essa verão aqui, então vou me basear na versão 5.1.0 que tenho aqui em casa.
verifique esse ao descompactar o zip tem uma pasta chamada jpa , nele tem o hibernate-entitymanager-5.1.3.Final.jar
adicione ele no seu projeto e teste novamente.
1 curtida
Tem esse jar sim.
Adicionei ele e apareceu outro erro, 
Exception in thread “main” java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:87)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.caelum.tarefas.jpa.GeraTabelas.main(GeraTabelas.java:9)
Cara, ta foda, se não é voce tentando me ajudar…
1 curtida
pela a imagem atual vi que voce tem dois jar jboss-logging.
1 - jboss-logging-3.1.1.GA.jar
2 - jboss-logging-3.3.0.Final.jar
remova a opção 1 e teste novamente.
2 curtidas
AAAAAAAAAAAAAAAAAAAAAAAAH MLKKKKKKKKKKKKK!!!
VOCE E FOOODAA!!!
Agora foi mano kkkk estou feliz demais
Mais uma vez voce me salvou cara.
Obrigado mesmo.
Um dia me tornarei um Desenvolvedor Java e me lembrarei das suas ajudas sempre.
1 curtida