2012-02-03 17 views
6

Jak podano w temacie, mój problem polega na tym, że nie można zbudować EntityManagerFactory. Używam Maven + Hibernate. Łączę się z bazą danych MySQL DB (<jdbc://mysql://localhost:3306/<dbname>).[PersistenceUnit: <name>]: nie można zbudować EntityManagerFactory

Dziwne jest to podczas debugowania w Eclipse, działa dobrze. Ale kiedy buduję go przy użyciu kompilacji Mavena, plik JAR rzuca taki błąd. Sprawdziłem już plik manifestu i wszystkie niezbędne pliki JAR zostały uwzględnione w ścieżce klasy. Poniżej znajduje się błąd pliku JAR wyświetlanego w konsoli:

================================= =========================================

Feb 3, 2012 5:01:16 PM org.hibernate.annotations.common.Version <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 
Feb 3, 2012 5:01:16 PM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.0.1.Final} 
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Feb 3, 2012 5:01:16 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!) 
Feb 3, 2012 5:01:16 PM class <name>.<name>.<name> <name> 
SEVERE: [ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory 
[ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory 

== ================================================== =======================

poniżej jest mój persistence.xml:

<persistence 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_1_0.xsd" 
version="1.0"> 
<persistence-unit name="<name>"> 
<provider>org.hibernate.ejb.HibernatePersistence</provider> 
<class>classname</class> 
<properties> 
<!-- <property name="hibernate.ejb.cfgfile" value="/classifyPE.cfg.xml"/> --> 
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
<property name="hibernate.connection.password" value="<value>" /> 
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/<name>" /> 
<property name="hibernate.connection.username" value="root" /> 
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
</properties> 
</persistence-unit> 
</persistence> 

========= ================================================== ================

Co ja tu robię źle? Albo czego mi brakuje?
Jak wspomniano, działa debugowanie. Ale kiedy pakuję go do JAR (z wszystkimi niezbędnymi JARami obecnymi w folderze libs), to nie jest.

+1

Chyba chodzi o coś więcej niż to, w prawej konsoli? A może szczegółowy ślad stosu? – tartak

+1

Musi być więcej logów poniżej podanego execption, proszę je opublikować –

Odpowiedz

0

Plik persistence.xml powinien znajdować się w katalogu META-INF w katalogu głównym słoika. Sprawdź, czy tam jest, czy nie. Zgaduję, że jest to kwestia związana wyłącznie z klasą.

+0

Tak, jest już w folderze META-INF .. razem z plikiem manifestu – jaysonpryde

0

Spróbuj zmienić nazwę jednostki utrwalania. Jest to ważne, ponieważ nazwa służy do identyfikacji jednostki utrwalania powiązanej z każdym serwerem EntityManager.

Więc:

<persistence-unit name="<name>"> 

należy zastąpić (na przykład):

<persistence-unit name="myUnit"> 
+0

Zrób to samo z '' dla hasła BD. –

+2

To są tylko fikcyjne jednostki ... Nie podałem rzeczywistej nazwy/wartości, ale już mam – jaysonpryde

2

<class>classname</class>

Podejrzewam Twoja jednostka nie jest nazwany classname, więc spróbuj, określając pełna nazwa klasy classpath (na przykład foo.bar.real nazwaklasy z realclassna ja jestem nazwą twojej klasy-jednostki).

+0

Podałem ją poprawnie/całkowicie ... Nadal występuje błąd – jaysonpryde

+0

Czy twoje parametry bazy danych (inaczej użytkownik, hasło i tak dalej) na stałe w persistence.xml lub używasz dowolnych symboli zastępczych? Co mam na myśli: czy jesteś pewien, że używane są te same parametry? – AlexS

+0

Tak, są one zakodowane na stałe w pliku persistence.xml ... – jaysonpryde

3

dodać to w pliku xml

<property name="javax.persistence.validation.mode">none</property> 
Powiązane problemy