创建实体管理器[java.lang.NoSuchMethodError:org.Hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V]中的Hibernate错误

创建实体管理器[java.lang.NoSuchMethodError:org.Hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V]中的Hibernate错误,java,hibernate,maven,jpa,intellij-idea,Java,Hibernate,Maven,Jpa,Intellij Idea,我正在使用Hibernate作为JavaEE6和JBoss7.1.1 Final中JPA的提供者。我搜索了解决方案,但我对hibernate还不熟悉,我没有解决这个问题。我收到这个错误: Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V at org.hibernate.boot.registry.Stan

我正在使用Hibernate作为JavaEE6和JBoss7.1.1 Final中JPA的提供者。我搜索了解决方案,但我对hibernate还不熟悉,我没有解决这个问题。我收到这个错误:

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V
at org.hibernate.boot.registry.StandardServiceRegistryBuilder.build(StandardServiceRegistryBuilder.java:278)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:173)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:34)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:165)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:114)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:78)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at Main.main(Main.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
}

我的图书馆

我的项目文件夹结构

最后是我的pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<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>agenda5</groupId>
    <artifactId>agenda5</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <hibernate-core.version>3.6.4.Final</hibernate-core.version>
        <mysql-connector-java.version>5.1.16</mysql-connector-java.version>
        <slf4j.version>1.6.1</slf4j.version>
        <log4j.version>1.6.1</log4j.version>
    </properties>

    <dependencies>
        <!-- HIBERNATE DEPENDENCIES -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate-core.version}</version>
        </dependency>

        <!-- MYSQL DEPENDENCIES -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>

        <!-- Logging Dependencies -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>


</project>

4.0.0
代理5
代理5
1.0-快照
UTF-8
3.6.4.4最终版本
5.1.16
1.6.1
1.6.1
org.hibernate
冬眠核心
${hibernate core.version}
mysql
mysql连接器java
${mysql connector java.version}
org.slf4j
slf4j api
${slf4j.version}
org.slf4j
slf4j-log4j12
${log4j.version}
xml应该如下所示
org.hibernate.ejb.HibernatePersistence
jdbc:mysql://localhost:3306/test_app
Driver
xml应该如下所示
org.hibernate.ejb.HibernatePersistence
jdbc:mysql://localhost:3306/test_app


com.mysql.jdbc.drivers无法解决任何NoSuchMethodError。。。这取决于用户在类路径中的JAR。您好,我希望通过查看以下语句,线程“main”java.lang.NoSuchMethodError中的异常:org.hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V。很明显,在通过org.hibernate.Configuration类加载perstance.xml文件时,它发现xml的定义不正确。如果您可以看到org.hibernate.Configuration类的jar文件hibernate-core.jar本身包含的.class文件。请参阅api@grepcode.comOkay,解决方案是什么?按照上述建议格式化persistence.xml文件,然后重新构建应用程序,然后检查一次。它应该可以工作。我解决了这个问题,但是我如何用实体创建表呢?这并不能解决任何NoSuchMethodError。。。这取决于用户在类路径中的JAR。您好,我希望通过查看以下语句,线程“main”java.lang.NoSuchMethodError中的异常:org.hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V。很明显,在通过org.hibernate.Configuration类加载perstance.xml文件时,它发现xml的定义不正确。如果您可以看到org.hibernate.Configuration类的jar文件hibernate-core.jar本身包含的.class文件。请参阅api@grepcode.comOkay,解决方案是什么?按照上述建议格式化persistence.xml文件,然后重新构建应用程序,然后检查一次。应该可以。我解决了这个问题,但是我如何用实体创建表呢?所以你的JPA实现JAR是不一致的。NoSuchMethodError具有足够清晰的javadocs。获取一致的JAR项目中安装的所有JAR都是通过Maven安装的,但是我将修复JAR的完整javadocs。我修复了创建hibernate.cfg.xml的问题。但现在我有一个新的例外:
[PersistenceUnit:manager1]无法构建不属于JPA的EntityManagerFactory
。那么您现在大概没有使用JPA,不需要创建hibernate.cfg.xml吗?我在创建时遇到了新的异常:
javax.persistence.PersistenceException:[PersistenceUnit:manager1]无法构建EntityManagerFactory
,因此您的JPA实现JAR不一致。NoSuchMethodError具有足够清晰的javadocs。获取一致的JAR项目中安装的所有JAR都是通过Maven安装的,但是我将修复JAR的完整javadocs。我修复了创建hibernate.cfg.xml的问题。但现在我有一个新的例外:
[PersistenceUnit:manager1]无法构建不属于JPA的EntityManagerFactory
。那么您现在大概没有使用JPA,不需要创建hibernate.cfg.xml吗?我在创建时遇到新异常:
javax.persistence.PersistenceException:[PersistenceUnit:manager1]无法构建EntityManagerFactory
org.hibernate.HibernateException:所选事务策略需要访问JTA TransactionManager
public class Main {
public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
    EntityManager em = emf.createEntityManager();

    // ----- Creating Users

    EntityTransaction t = em.getTransaction();
    t.begin();

    User usuario1 = new User();
    usuario1.setUser_Name("User1");
    usuario1.setUserMessage("Text example 1");
    em.persist(usuario1);

    User usuario2 = new User();
    usuario2.setUser_Name("User2");
    usuario2.setUser_Name("Text example 2");
    em.persist(usuario2);

    t.commit();

    em.close();
    emf.close();
}
    <?xml version="1.0" encoding="UTF-8"?>
<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>agenda5</groupId>
    <artifactId>agenda5</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <hibernate-core.version>3.6.4.Final</hibernate-core.version>
        <mysql-connector-java.version>5.1.16</mysql-connector-java.version>
        <slf4j.version>1.6.1</slf4j.version>
        <log4j.version>1.6.1</log4j.version>
    </properties>

    <dependencies>
        <!-- HIBERNATE DEPENDENCIES -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate-core.version}</version>
        </dependency>

        <!-- MYSQL DEPENDENCIES -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>

        <!-- Logging Dependencies -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>


</project>
xml should be like the below
<persistence-unit name="manager1" transaction-type="JTA">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <properties>
                <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_app</property>
                <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property
                <property name="hibernate.connection.username">test</property
                <property name="hibernate.connection.password">test</property
                <property name="hibernate.archive.autodetection">class</property
                <property name="hibernate.show_sql">true</property
                <property name="hibernate.format_sql">true</property
                <property name="hbm2ddl.auto">create-drop</property
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property
            </properties>
        </persistence-unit>
    </persistence>