2016-04-12 3 views
0
private static SessionFactory factory; 

    public static void main(String[] args) { 
     try{ 
      factory = new Configuration().configure().buildSessionFactory(); 
     }catch (Throwable ex) { 
      System.err.println("Failed to create sessionFactory object." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
     ManageEmployee ME = new ManageEmployee(); 

これは私のコードです。問題になるかもしれないものsessionfactoryオブジェクトを取得する際に例外を出すコード

Failed to create sessionFactory object.java.util.ServiceConfigurationError: org.hibernate.boot.registry.selector.StrategyRegistrationProvider: Provider org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl not found 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.sanket.ManageEmployee.main(ManageEmployee.java:22) 
Caused by: java.util.ServiceConfigurationError: org.hibernate.boot.registry.selector.StrategyRegistrationProvider: Provider org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl not found 
    at java.util.ServiceLoader.fail(Unknown Source) 
    at java.util.ServiceLoader.access$300(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:340) 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorBuilder.buildSelector(StrategySelectorBuilder.java:162) 
    at org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:222) 
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:119) 
    at com.sanket.ManageEmployee.main(ManageEmployee.java:19) 

:エラーとしてその投げ

factory = new Configuration().configure().buildSessionFactory(); 

ライン上の?私はgoogleに、オブジェクトを取得するいくつかの新しい方法がありますが、それと同じ問題が残っています。

public static void main(String[] args) { 

    try{ 
     Configuration configuration = new Configuration().configure(); 
     configuration.configure("hibernate.cfg.xml"); 
     StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 
     ServiceRegistry serviceRegistry = ssrb.build(); 
     setFactory(configuration.buildSessionFactory(serviceRegistry)); 
    }catch (Throwable ex) { 
     System.err.println("Failed to create sessionFactory object." + ex); 
     throw new ExceptionInInitializerError(ex); 
    } 

これはGoogleの提案による新しいコードです。

誰かが私を助けることができますか?私は完全にHibernateに新しいです。

答えて

0

これは構成コードの問題ではありません。このコードは、このクラスorg.hibernate.cache.infinispan.StrategyRegistrationProviderImpl

それはInfinispanキャッシュとの統合に使用すると、バージョン対応のhibernate-infinispan-xxx.jarに常駐しているとよく

factory = new Configuration().configure().buildSessionFactory();

問題を動作するはずです。

あなたがhttp://mvnrepository.com/artifact/org.hibernate/hibernate-infinispan/

からクラスパスにjarファイルを追加する必要があるまたはあなたがhibernate.cfg.xmlから、たとえば、Hibernate設定からinfinispanキャッシュ設定を削除することができます。 Hibernate 5 :- org.hibernate.MappingException: Unknown entity

更新

new Configuration().configure().buildSessionFactory()コードは、あなたがそのエラーを修正した後、構成コードのあなたの第二の変形が動作しないこと面白いですHibernateは5で廃止されていない休止状態4のために推奨されていません。

エラーの理由java.util.ServiceLoaderあなたは構成コード

URL url = Thread.currentThread().getContextClassLoader() 
    .getResource(
    "org/hibernate/cache/infinispan/StrategyRegistrationProviderImpl.class"); 
System.out.println(url); 
前にこのコードを追加することにより、このクラスを確認することができます org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl

クラスをロードできないことを

org.hibernate.boot.registry.selector.StrategyRegistrationProvider: Provider org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl not found

main()メソッドを持つコンソールアプリケーションがあり、 jaはWEB-INF/libで、それは変です。

+0

私の休止状態のバージョンは5.1.0です。そして、私はコードに関して多くの答えを見てきました。 factory = new Configuration()。configure()。buildSessionFactory(); これは廃止され、私が言及した新しい行が使用されています。 私は既にWEB-INF下のlibフォルダにそのjarファイルを持っています。 – sanketprabhune

+0

@ user2145306私は自分の答えを更新します。 –

+0

このエラーを解決するにはどうすればよいですか? –

関連する問題