1

ClassFormatError: クラス ファイル javax/persistence/InheritanceType のネイティブまたは抽象ではないメソッドにコード属性がありません

sessionFactory を hibernate.cfg.xml ファイルにビルドしようとすると、次のエラーが発生しました。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">mateusz</property>
        <property name="hibernate.connection.password">mateusz123</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/carpool</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <mapping class="org.mathew.data.User"></mapping>
    </session-factory>
</hibernate-configuration>

私の HibernateUtil クラス:

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new AnnotationConfiguration().configure().buildSessionFactory();

        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}

スタックトレース:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.mathew.hibutil.HibernateUtil.buildSessionFactory(HibernateUtil.java:19)
    at org.mathew.hibutil.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at org.mathew.mysql.MySqlQueries.<init>(MySqlQueries.java:16)
    at org.mathew.test.AppMain.main(AppMain.java:8)
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/InheritanceType
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at org.hibernate.cfg.InheritanceState.extractInheritanceType(InheritanceState.java:51)
    at org.hibernate.cfg.InheritanceState.<init>(InheritanceState.java:21)
    at org.hibernate.cfg.AnnotationBinder.buildInheritanceStates(AnnotationBinder.java:2146)
    at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:492)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
    at org.mathew.hibutil.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 3 more

私のライブラリ:

cglib
commons-collections
commons-logging
dom4j
hibernate3
hibernate-annotations
hibernate-commons-annotations
hibernate-core
java-api-6.0
javassist
jta
log4j
mysql-connector-java
persistence-api
slf4j
slf4j-log4j

画像をアップロードできません:)

誰かが助けてくれれば幸いです。ありがとう!:)

4

1 に答える 1

0

依存関係を手動で管理しているようですが、実際には依存関係マネージャー (maven、ant を使用したアイビーなど) を使用して、正しい依存関係 (期待されるバージョンのすべてのライブラリ) を確実に取得する必要があります。使用しているライブラリのバージョンを指定していないため、いくつかの問題が考えられます。

  • hibernate と互換性のないバージョンの persistence-api
  • hibernate jar の互換性のない組み合わせ: hibernate-core と一緒に hibernate3 jar があるようですが、正しくないようです。古いバージョンの Hibernate と最新の jar が混在しているように見えます。そのため、最近のバージョンにのみ存在するクラスは、jar がクラスパスの最初にある場合、古いバージョンのクラスにアクセスしている可能性があります。
于 2012-11-02T18:16:46.983 に答える