[RESOLVIDO] PersistenceException: No Persistence provider for EntityManager named

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):

[code]

<?xml version="1.0" encoding="UTF-8"?>

<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>

[/code]

Alguém pode me ajudar, por favor?

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)

Em qual caminho ta o seu persistence.xml?

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

Esse é o caminho:

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

[quote=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[/quote]

Grande Diogo! rs

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

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:

[quote=rodrigo.uchoa]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:
[/quote]

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:

[code]<?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”>

&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;

</persistence>[/code]

Arquivo pom.xml:

[code]<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”>
<modelVersion>4.0.0</modelVersion>
<groupId>com.algaworks</groupId>
<artifactId>Financeiro</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>

&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;

</project>[/code]

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)

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.

2 curtidas

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

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

Como ficou sua estrutura estou com o mesmo problema