Tomcat上的Java持久性-没有名为的EntityManager的持久性提供程序

Tomcat上的Java持久性-没有名为的EntityManager的持久性提供程序,java,hibernate,jpa,persistence,tomcat7,Java,Hibernate,Jpa,Persistence,Tomcat7,我正在尝试学习使用持久性,并且已经成功地在本地机器上的glassfish上运行了该项目。现在我的下一步是在Tomcat上的服务器上运行它,但这不起作用 我总是收到错误“没有名为MyPersistence的EntityManager的持久性提供程序” 这就是战争的结构 . |____index.jsp |____WEB-INF | |____classes | | |____Mainpackage | | | |____Ente.class | | |____META-INF | | | |___

我正在尝试学习使用持久性,并且已经成功地在本地机器上的glassfish上运行了该项目。现在我的下一步是在Tomcat上的服务器上运行它,但这不起作用

我总是收到错误“没有名为MyPersistence的EntityManager的持久性提供程序”

这就是战争的结构

.
|____index.jsp
|____WEB-INF
| |____classes
| | |____Mainpackage
| | | |____Ente.class
| | |____META-INF
| | | |____persistence.xml
| |____lib
| | |____javax.persistence.jar
| | |____mysql-connector-java-5.1.24-bin.jar
| |____web.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="MyPersistence">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://h2134265.stratoserver.net/persistencetest"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="persistence"/>
            <property name="hibernate.connection.password" value="XXXXXXXXX"/>
            <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>
        <class>Mainpackage.Ente</class>
    </persistence-unit>
</persistence>
我的jsp的内容是

  EntityManagerFactory fac = Persistence.createEntityManagerFactory("MyPersistence");
  EntityManager mgr = fac.createEntityManager();
  mgr.getTransaction().begin();
  Ente e = new Ente();
  e.setName("Quietscheente");
  mgr.persist(e);
  mgr.getTransaction().commit();
  mgr.close();
  fac.close();
我的persistence.xml看起来像

.
|____index.jsp
|____WEB-INF
| |____classes
| | |____Mainpackage
| | | |____Ente.class
| | |____META-INF
| | | |____persistence.xml
| |____lib
| | |____javax.persistence.jar
| | |____mysql-connector-java-5.1.24-bin.jar
| |____web.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="MyPersistence">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://h2134265.stratoserver.net/persistencetest"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="persistence"/>
            <property name="hibernate.connection.password" value="XXXXXXXXX"/>
            <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>
        <class>Mainpackage.Ente</class>
    </persistence-unit>
</persistence>

org.hibernate.ejb.HibernatePersistence
Mainpackage.Ente

我确实尝试将persistence.xml移到另一个位置,但根据internet上的一些来源,该位置应该是正确的

根据您的
WEB-INF/lib
内容,没有Hibernates库

因此,请将其库添加到您的
WEB-INF/lib
文件夹中

下面是一个必要库的列表(注意,
javax.persistence.jar
您需要删除以避免可能的jar冲突):

  • antlr-2.7.7.jar
  • dom4j-1.6.1.jar
  • hibernate-commons-annotations-4.0.1.Final.jar
  • hibernate-core-4.1.8.Final.jar
  • hibernate-entitymanager-4.1.8.Final.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • javassist-3.15.0-GA.jar
  • jboss-logging-3.1.0.GA.jar
  • jboss-transaction-api_1.1_spec-1.0.0.Final.jar

谢谢。我以为IntelliJ会自动添加它们。现在一切正常:)