No Persistence Provider - JPA - Hibernate - JBoos - Maven - Eclipse

3 respostas
douglas_arantes

Pessoal, eu já havia criado alguns projetos simples com JPA(Hibernate) e havia funcionado tudo perfeitamente.

Mas agora comecei a estudar um pouco de Maven, instalei o plugin do Maven no Eclipse, crie o pom.xml, persistence.xml, e uma main só pra ver se iria funcionar, mas esta ocorrendo a exceção No Persistence provider for EntityManager named Library_PU (igual quando falta um Jar).

Vou listar meu arquivos, para que possam dar uma olhada. src\main\resources\META-INF\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="Library_PU">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>


		<properties>
			
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/libraryDB" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />
			
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
			<property name="hibernate.connection.shutdown" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="create" />
			<property name="hibernate.show_sql" value="false" />
			<property name="hibernate.format_sql" value="false" />
		</properties>
	</persistence-unit>
</persistence>
<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/maven-v4_0_0.xsd">


	<modelVersion>4.0.0</modelVersion>
	<groupId>br.com.app</groupId>
	<artifactId>library</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>library</name>

	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.12</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
			<version>6.0</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.5.8</version>
		</dependency>

		<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<version>3.5</version>
		</dependency>
	</dependencies>

	<repositories>
		<repository>
			<id>prime-repo</id>
			<name>PrimeFaces Maven Repository</name>
			<url>http://repository.primefaces.org</url>
			<layout>default</layout>
		</repository>
	</repositories>

	<build>
		<sourceDirectory>src</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
public class JPAUtil{
	public static void main(String[] args) {
		
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("Library_PU");

		factory.close();


	}
}
E o Stacktrace
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named Library_PU
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at com.app.library.util.JPAUtil.main(JPAUtil.java:47)

Só completando, estou usando eclipse, criei um projeto Maven (meu primeiro - sou inexperiente com Maven) utilizando um plugin instalado no eclipse, após isso define o pom.xml que se encontra acima, pelo que parece o Maven conseguiu fazer o download de todas as dependências, e estou utilizando o JBoss 7.1.

Uma desconfiança que tenho é que no pom.xml coloquei a dependência do Java EE 6, o qual a implementação de referência é o Eclipse Link, e no projeto estou utilizando o Hibernate, e o JBoss também utiliza o Hibernate, sera que o motivo do erro é esse?

Agradeço desde já quem me ajudar.

Até mais.

3 Respostas

L

douglas_arantes, a mensagem diz que não encontrou a persistence-unit Library_PU, apesar de vc ter colocado no local src\main\resources\META-INF. A configuração do resources não ficou legal e quando vc executa ele nao encontra… tente usar algum archetype do maven que tenha a configuração dos frameworks que você quer usar. Ou mude a maneira que vc criou o projeto.

Abraços

douglas_arantes

Lintz_net:
douglas_arantes, a mensagem diz que não encontrou a persistence-unit Library_PU, apesar de vc ter colocado no local src\main\resources\META-INF. A configuração do resources não ficou legal e quando vc executa ele nao encontra… tente usar algum prototype do maven que tenha a configuração dos frameworks que você quer usar. Ou mude a maneira que vc criou o projeto.

Abraços

Valeu pela resposta Lintz_net, você conhece algum Maven Archetype com suporte a pelo menos JSF 2.0 e JPA 2.0, que esteja funcionando corretamente.

Até mais.

L

Douglas, tenta este: jee6-basic-archetype.

Abraços

Criado 1 de junho de 2013
Ultima resposta 2 de jun. de 2013
Respostas 3
Participantes 2