2017-11-02 8 views
0

最近Hibernate 4.3.10から5.2.12にアップグレードしました。また、Java 8を使用してwildfly 9にアプリケーションをデプロイしようとすると、エラー以下になる。Hibernate 5.1.2 java.lang.NoClassDefFoundError:org/hibernate/boot/spi/SessionFactoryOptions

これは、関連するpom.xmlスニペットです。

 <properties> 
      <org.hibernate.version>5.2.12.Final</org.hibernate.version> 
     </properties> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${org.hibernate.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${org.hibernate.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>${org.hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-envers</artifactId> 
      <version>${org.hibernate.version}</version> 
     </dependency> 

ここにスタックトレースがあります。

14:45:49,300 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 17) MSC000001: Failed to start service jboss.persistenceunit."your.war#yourdb": org.jboss.msc.service.StartException in service jboss.persistenceunit."your.war#yourdb": java.lang.NoClassDefFoundError: org/hibernate/boot/spi/SessionFactoryOptions at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:665) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jboss.threads.JBossThread.run(JBossThread.java:320) Caused by: java.lang.NoClassDefFoundError: org/hibernate/boot/spi/SessionFactoryOptions at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetPublicMethods(Class.java:2902) at java.lang.Class.getMethods(Class.java:1615) at org.hibernate.service.internal.AbstractServiceRegistryImpl.applyInjections(AbstractServiceRegistryImpl.java:278) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:269) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:295) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2444) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2440) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849) at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) ... 7 more Caused by: java.lang.ClassNotFoundException: org.hibernate.boot.spi.SessionFactoryOptions from [Module "deployment.your.war:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455) at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)

私の環境で何が間違っているのでしょうか?

+0

から除外を使用する例は、あなたが一度ビルド・パスをチェックしてもらえますか?おそらく古い瓶のバージョンを参照している可能性があります。 – gschambial

答えて

0

クラスパスに異なるハイバネートバージョンがある場合、これが理想的です。

+0

ありがとう、しかし私はpom.xmlだけの単純なプロジェクトです。私は 'mvn clean install'を実行するので、.warファイルに最新の休止状態のjarファイルがあるはずです。古いものを参照しようとしているところから理解できません。バージョン ? – java2017

0

Wildflyには独自のHibernateモジュールがあります。 exclusionsを使用して除外することができます。

ここ https://docs.jboss.org/hibernate/orm/5.2/topical/html_single/wildfly/Wildfly.html

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1"> 
    <deployment> 
     <exclusions> 
      <module name="org.javassist" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 
+0

あなたは正しいと思います。すべてのwildflyのバージョンには、デフォルトのバージョンのhibernateが付属していることがわかりました。私の場合は、wildfly9のために、それは冬眠していた4.3.1とされているものが参照されています。私はそれに関する文書をhttps://docs.jboss.org/hibernate/orm/5.2/topical/html_single/wildfly/Wildfly.htmlで見つけました。これは役に立ちました。そして私はこれを今試してみようと思います。一方、私は「除外」の使い方を知りたいですか? – java2017

+0

@ java2017私の回答を更新しました –

関連する問題