2011-06-15 65 views
1

我正在使用Netbeans 7,Glassfish 3.1的JavaEE6應用程序。在JavaEE應用程序中作爲JPA提供程序休眠

該應用程序工作正常,正在GlassFish上部署。但問題是,當我設置Hibernate作爲在persistence.xml的供應商,我得到以下異常:

INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver. 
SEVERE: Exception while preparing the app 
SEVERE: org/dom4j/Element 
java.lang.NoClassDefFoundError: org/dom4j/Element 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:72) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:205) 
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119) 
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213) 
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:486) 
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220) 
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:364) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.postConstruct(ApplicationLoaderService.java:208) 
    at com.sun.hk2.component.AbstractCreatorImpl.inject(AbstractCreatorImpl.java:131) 
    at com.sun.hk2.component.ConstructorCreator.initialize(ConstructorCreator.java:91) 
    at com.sun.hk2.component.AbstractCreatorImpl.get(AbstractCreatorImpl.java:82) 
    at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:67) 
    at com.sun.hk2.component.EventPublishingInhabitant.get(EventPublishingInhabitant.java:139) 
    at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:76) 
    at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:243) 
    at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:135) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.start(GlassFishImpl.java:79) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:117) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97) 
    at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:55) 

這裏是我的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="EntAppEJB-ejbPU" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>schema</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="hibernate.search.default.indexBase" value="/tmp"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

這些都是jar文件,我已經包含在該項目中:

hibernate3.jar 
hibernate-jpa-2.0-api-1.0.0.Final.jar 
antlr-2.7.6.jar 
commons-collections-3.1.jar 
dom4j-1.6.1.jar 
javassist-3.12.0.GA.jar 
jta-1.1.jar 
slf4j-api-1.6.1 
slf4j-simple-1.6.1 
hibernate-search-3.4.0.Final.jar 
commons-lang-2.4 
hibernate-commons-annotations-3.2.0.Final.jar 
hibernate-core-3.6.3.Final.jar 
lucene-core-3.1.0.jar 

我在這裏錯過了什麼?任何建議是最受歡迎的。

+1

另請參閱http://stackoverflow.com/questions/594079/is-it-possible-to-use-hibernate-as-glassfishs-persistence-provider – 2011-06-15 09:20:12

回答

3

CLASSPATH中沒有DOM4J JAR。檢查您部署的軟件包,看它是否在WAR文件的WEB-INF/lib中。

+0

感謝您的信息。你說得對,我的.ear文件中缺少dom4j.jar。現在我已經將dom4j-1.6.1.jar添加到我的項目庫中,而.ear現在包含dom4j.jar。但在部署到Glassfish時,我仍然遇到同樣的錯誤。 – jdeveloper 2011-06-15 11:16:07

+0

Finallty它在我複製Glassfish的domain \ lib下面提到的罐子後工作。 公地集合-3.1.jar 的dom4j-1.6.1 hibernate3.jar裏 了Javassist-3.12.0.GA.jar Lucene的核心 - 3.1.0.jar SLF4J-API-1.6.1 – jdeveloper 2011-06-15 11:48:32

相關問題