Erro Config. JPA com Hibernate

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, :sob:

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

Maravilha meu amigo.

Bons estudos.

{ },s.