web-dev-qa-db-ja.com

java.lang.NoSuchMethodError:org.hibernate.internal.CoreMessageLogger.debugf(Ljava / lang / String; I)V

インターネットからのデータを解析し、Hibernateを使用してPostgreSQLに保存する単純な@Singleton whitin Java EEプロジェクトが1つあります。

@Startup
@Singleton
public class PSNDBB {

    @PostConstruct
    public void Parser(){

    //getting data

    SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
    Session session=sessionFactory.openSession();
    session.beginTransaction();

    for(Object obj : array){


        GameData game=new GameData();
        session.save(game);


    }

    session.getTransaction().commit();      
    session.close();

    }
}

しかし、私はこれを手に入れています

Caused by: Java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debugf(Ljava/lang/String;I)V
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.Java:87)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.Java:145)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.Java:66)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.Java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.Java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.Java:234)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:208)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.Java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.Java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.Java:111)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.Java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.Java:418)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.Java:87)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:692)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:724)
    at org.showgazer.psn.PSNDBB.Parser(PSNDBB.Java:84)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:497)
    at com.Sun.ejb.containers.interceptors.BeanCallbackInterceptor.intercept(InterceptorManager.Java:1035)
    at com.Sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.Java:72)
    at com.Sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.Java:205)
    ... 70 more

を指しています

SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();

しかし、hibernate.cfg.xmlはJava SEプロジェクト内、およびJava EE内でこのエラーが発生します。使用したすべてのJARは/WEB-INF/libにあります。hibernate.cfg.xmlsrcフォルダーと/WEB-INFフォルダー内。コンテナやビルドツールを使用せずにGlassFishを使用しているので、悪いと思いますが、この簡単な例でどこで間違いがあったのかを知る必要があります。

9
showgazer

プロジェクトのlibフォルダーからjboss-loggingjarファイルを削除し、glassfish\modulesフォルダーのjboss-logging.jarを http://mvnrepository.com/artifact/org.jboss.logging)の最後のバージョンに置き換えることでこの問題を解決しました。 /jboss-logging/3.3.0.Final

8
Igor Bobko

アプリケーションサーバーに含まれているロギングライブラリとHibernateに必要なロギングライブラリの間にバージョンの不一致があるようです。

同じ問題が発生し、設定は次のとおりでした:Jboss AS 7.1.1.Final and Hibernate 5.1.0そして、jboss-deployment-structure.xmlでjbossロギングモジュールを除外することを解決しました。

    <jboss-deployment-structure>
        <deployment>
            <!-- ADDED -->
            <exclusions>
                <module name="org.hibernate" /> <!-- Escludo l'Hibernate integrato in jboss e uso quello interno -->
                <module name="org.jboss.logging" /> <!-- Escludo li logger integrato in jboss -->
            </exclusions>
            <!-- FINE ADDED -->
            <dependencies>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
2
kekolab

これらの厄介なバージョンの互換性の問題を修正するためのすべての銀の弾丸は、春を使用することですIOプラットフォーム

http://platform.spring.io/platform/

これは、MavenまたはGradleを介してSpringのすべての依存関係管理を行います。

(この後、プロジェクトを更新または追加するときに、一般的な開発者が追跡し、数か月ごとに苦しむ必要がある難解なバージョンの問題について心配する必要はありません)

また、注:(マルチモジュールプロジェクト内の)すべてのモジュールが同じバージョン番号を共有していることも確認する必要があります。当たり前のように聞こえますが、モジュールを追加するときにこれを忘れることができます。

0
Toothless Seer