[RESOLVIDO] PersistenceException: No Persistence provider for EntityManager named

12 respostas
J

Olá, pessoal.

Estou usando uma apostila de desenvolvimento java muito legal (http://assets.algaworks.com/media/ebooks/algaworks-ebook-java-ee-7-com-jsf-primefaces-e-cdi-20131224.pdf).

Mas, estou na parte de criação das tabelas no mysql através do hibernate.

Mas estou me deparando com um erro muito chato, a qual não sei resolver.

Segue abaixo o erro:

Mai 04, 2015 5:59:33 PM org.hibernate.ejb.Ejb3Configuration configure
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FinanceiroPU
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at com.algaworks.financeiro.main.CriaTabelas.main(CriaTabelas.java:14)][Mai 04, 2015 5:59:33 PM org.hibernate.ejb.Ejb3Configuration configure
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FinanceiroPU
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at com.algaworks.financeiro.main.CriaTabelas.main(CriaTabelas.java:14)
Abaixo o código da classe responsável por criar as tabelas no banco:
package com.algaworks.financeiro.main;

import javax.persistence.Persistence;

/**
 * 
 * @author Julio
 *
 */

public class CriaTabelas {

	public static void main(String[] args) {
		Persistence.createEntityManagerFactory("FinanceiroPU");
	}
	
}
Abaixo, o conteúdo do arquivo persistence.xml (que está no caminho /Financeiro/src/main/resources/persistence.xml):
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">

	<persistence-unit name="FinanceiroPU">

		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/financeiro" />
			<property name="javax.persistence.jdbc.user" value="usuario" />
			<property name="javax.persistence.jdbc.password" value="root" />
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
		</properties>
		
	</persistence-unit>
</persistence>

Alguém pode me ajudar, por favor?

12 Respostas

R
J

O erro persiste!

Mai 04, 2015 8:01:17 PM org.hibernate.ejb.Ejb3Configuration configure INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FinanceiroPU at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at com.algaworks.financeiro.main.CriaTabelas.main(CriaTabelas.java:14)

R

Em qual caminho ta o seu persistence.xml?

D

Mano seu problema é que o hibernate não está achando sua pasta META-INF da uma olhada nesse post que o cara estava com o mesmo problema

http://www.guj.com.br/java/218283-could-not-find-any-meta-infpersistencexml-file-in-the-classpath-resolvido

Abraço

J

Esse é o caminho:

/Financeiro/src/main/resources/persistence.xml

J

diogoprosoft:
Mano seu problema é que o hibernate não está achando sua pasta META-INF da uma olhada nesse post que o cara estava com o mesmo problema

http://www.guj.com.br/java/218283-could-not-find-any-meta-infpersistencexml-file-in-the-classpath-resolvido

Abraço

Grande Diogo! rs

Já dei uma olhada nesse tópica citado e não achei a solução! =(

R

Agora vamos lá.

Compare a mensagem de erro:

Com o caminho onde está o seu persistence.xml:

Você não acha que ta faltando um “META-INF” ai não? :slight_smile:

J
rodrigo.uchoa:
Agora vamos lá. Compare a mensagem de erro:
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath

Com o caminho onde está o seu persistence.xml:

/Financeiro/src/main/resources/persistence.xml

Você não acha que ta faltando um "META-INF" ai não? :)

Eu refiz todo o projeto aqui, porém o erro se mantém! =(

O persistence.xml está no path: /Financeiro/target/m2e-wtp/web-resources/META-INF/persistence.xml

Abaixo segue o conteúdo do persistence.xml:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;persistence version="2.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_2_0.xsd"&gt;

	&lt;persistence-unit name="FinanceiroPU"&gt;
		&lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
		&lt;properties&gt;
			&lt;property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/financeiro" /&gt;
			&lt;property name="javax.persistence.jdbc.user" value="root" /&gt;
			&lt;property name="javax.persistence.jdbc.password" value="root" /&gt;
			&lt;property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /&gt;
			&lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /&gt;
			&lt;property name="hibernate.show_sql" value="true" /&gt;
			&lt;property name="hibernate.format_sql" value="true" /&gt;
			&lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt;
		&lt;/properties&gt;
	&lt;/persistence-unit&gt;
&lt;/persistence&gt;

Arquivo pom.xml:

&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
	&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
	&lt;groupId&gt;com.algaworks&lt;/groupId&gt;
	&lt;artifactId&gt;Financeiro&lt;/artifactId&gt;
	&lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
	&lt;packaging&gt;war&lt;/packaging&gt;
	&lt;properties&gt;
		&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
	&lt;/properties&gt;
	&lt;build&gt;
		&lt;plugins&gt;
			&lt;plugin&gt;
				&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
				&lt;version&gt;3.0&lt;/version&gt;
				&lt;configuration&gt;
					&lt;source&gt;1.7&lt;/source&gt;
					&lt;target&gt;1.7&lt;/target&gt;
				&lt;/configuration&gt;
			&lt;/plugin&gt;
		&lt;/plugins&gt;
	&lt;/build&gt;

	&lt;dependencies&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;javax.servlet&lt;/groupId&gt;
			&lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
			&lt;version&gt;3.0.1&lt;/version&gt;
			&lt;scope&gt;provided&lt;/scope&gt;
		&lt;/dependency&gt;

		&lt;dependency&gt;
			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
			&lt;artifactId&gt;hibernate-core&lt;/artifactId&gt;
			&lt;version&gt;4.2.6.Final&lt;/version&gt;
			&lt;scope&gt;compile&lt;/scope&gt;
		&lt;/dependency&gt;
		&lt;!-- Implementação de EntityManager da JPA --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
			&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
			&lt;version&gt;4.2.6.Final&lt;/version&gt;
			&lt;scope&gt;compile&lt;/scope&gt;
		&lt;/dependency&gt;
		&lt;!-- Driver JDBC do MySQL --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;mysql&lt;/groupId&gt;
			&lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
			&lt;version&gt;5.1.26&lt;/version&gt;
			&lt;scope&gt;compile&lt;/scope&gt;
		&lt;/dependency&gt;
	&lt;/dependencies&gt;
&lt;/project&gt;
E o erro mostrado no console:
Mai 04, 2015 10:19:36 PM org.hibernate.ejb.Ejb3Configuration configure
INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named FinanceiroPU
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at com.algaworks.teste.CriaTabelas.main(CriaTabelas.java:8)
R

Cara,

Esse caminho que você mandou por último é do projeto já compilado:

Coloca o seu persistence dentro de “/Financeiro/src/main/resources/META-INF/persistence.xml” que deve dar certo, salvo algum problema com a integração entre WTP e Maven, ou alguma configuração maluca que você deixou no seu pom.

Quando o projeto é construido pelo maven, esses arquivos dentro de “/Financeiro/src/main/resources/” tem que ir parar lá em “/app/WEB-INF/classes” que é a raíz do classpath. E é na raiz no classpath que tem que estar o diretório META-INF, e dentro dele o persistence.xml.

Tenta pesquisar sobre a diferença entra a estrutura do projeto fonte, como aparece no seu eclipse, e a estrutura do projeto já com os binários quando é jogado no servidor de aplicação. O eclipse/maven no seu caso fazem o papel de transformar essa estrutura de código fonte na estrutura de binário que o servidor entende, como manda a especificação.

J

Rodrigo,

muito obrigado. Funcionou!
O problema era exatamente o caminho do persistence.xml.

Segue abaixo o log:

Mai 04, 2015 10:38:40 PM org.hibernate.annotations.common.Version <clinit> INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final} Mai 04, 2015 10:38:40 PM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {4.2.6.Final} Mai 04, 2015 10:38:40 PM org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found Mai 04, 2015 10:38:40 PM org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: Bytecode provider name : javassist Mai 04, 2015 10:38:41 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!) Mai 04, 2015 10:38:41 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Hibernate connection pool size: 20 Mai 04, 2015 10:38:41 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000006: Autocommit mode: true Mai 04, 2015 10:38:41 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/financeiro] Mai 04, 2015 10:38:41 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000046: Connection properties: {user=root, password=****, autocommit=true, release_mode=auto} Mai 04, 2015 10:38:41 PM org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect Mai 04, 2015 10:38:41 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory Mai 04, 2015 10:38:41 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init> INFO: HHH000397: Using ASTQueryTranslatorFactory Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000228: Running hbm2ddl schema update Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000102: Fetching database metadata Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000396: Updating schema Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: lancamento Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: pessoa Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: lancamento Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: pessoa Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: lancamento Mai 04, 2015 10:38:42 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata INFO: HHH000262: Table not found: pessoa Mai 04, 2015 10:38:44 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute INFO: HHH000232: Schema update complete

P

Obrigado tava doidim aqui, tive que criar o META-INF no resources pq não tinha, valeu cara! slight_smile:

M

Como ficou sua estrutura estou com o mesmo problema

Criado 4 de maio de 2015
Ultima resposta 6 de mar. de 2018
Respostas 12
Participantes 5