Hibernate作为JavaEE应用程序中的JPA Provider

时间:2011-06-15 09:02:53

标签: hibernate jpa java-ee-6

我正在使用Netbeans 7,Glassfish 3.1开发JavaEE6应用程序。

该应用程序运行正常,并在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 个答案:

答案 0 :(得分:3)

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

相关问题