javax.servlet.ServletException:无法初始化类org.hibernate.ejb.Ejb3Configuration

时间:2016-07-15 08:43:12

标签: hibernate jsf jpa ejb

我正在尝试使用Intellij Idea上的Hibernate连接数据库。

Bean文件是基于Hibernate实体类自动生成的。

public class SirketEntityManagedBean {

    private EntityManagerFactory myEntityManagerFactory;

    public SirketEntityManagedBean() {
        myEntityManagerFactory =   Persistence.createEntityManagerFactory("NewPersistenceUnit");
    }


}

这里是pom.xml:

<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>VPNTest6</groupId>
    <artifactId>VPNTest6</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>VPNTest6</groupId>
            <artifactId>VPNTest6</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.2.2.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.2.2.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
        </dependency>



    </dependencies>

</project>

这里是hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:oracle:thin:@//X.XX.XX.XX:1521/PROD</property>
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <mapping class="hib.OrtamEntity"/>
        <mapping class="hib.SorumluEntity"/>
        <mapping class="hib.SirketEntity"/>
        <mapping class="hib.VpnkullaniciEntity"/>
        <!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
    </session-factory>
</hibernate-configuration>

这里是persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>hib.OrtamEntity</class>
        <class>hib.SorumluEntity</class>
        <class>hib.SirketEntity</class>
        <class>hib.VpnkullaniciEntity</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@//XX.X.XX.XX:1521/PROD"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
            <property name="hibernate.connection.username" value="XXTEST"/>
            <property name="hibernate.connection.password" value="XXTEST"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

这里是stackTrace:

  

例外

     

javax.servlet.ServletException:无法初始化类   org.hibernate.ejb.Ejb3Configuration     javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

     

根本原因

     

java.lang.NoClassDefFoundError:无法初始化类   org.hibernate.ejb.Ejb3Configuration     org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)     javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)     javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)     beans.SirketEntityManagedBean。(SirketEntityManagedBean.java:40)     sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     java.lang.reflect.Constructor.newInstance(Constructor.java:423)     java.lang.Class.newInstance(Class.java:442)     com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186)     com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:100)     com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)     com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)     com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)     com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)     com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)     com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)     org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)     org.apache.el.parser.AstValue.getValue(AstValue.java:161)     org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)     com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)     javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)     org.primefaces.component.panelmenu.PanelMenu.getModel(PanelMenu.java:84)     org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:108)     javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)     javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)     javax.faces.render.Renderer.encodeChildren(Renderer.java:176)     javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)     org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:84)     org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:71)     org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)     javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)     javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)     javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)     javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)     javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)     com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)     com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)     com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)     com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)     com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)     javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

可能与命名策略有关吗? naming_strategy

或者它可能与项目目录有关? persistence.xml是否在正确的目录中?

proj_dir

或者它是关于hibernate-annotations类的? 我已经检查了下面的问题并手动添加了hibernate-annotations jar但是没有用。 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.ejb.Ejb3Configuration

0 个答案:

没有答案