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? 
[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? 
[/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”>
<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="root" />
<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>[/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>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.6.Final</version>
<scope>compile</scope>
</dependency>
<!-- Implementação de EntityManager da JPA -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.6.Final</version>
<scope>compile</scope>
</dependency>
<!-- Driver JDBC do MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
<scope>compile</scope>
</dependency>
</dependencies>
</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