2017-01-20 26 views
5

而在搖籃Java項目使用Hibernate 5.2.7連接到MariaDB的10.1.19,我正在一個Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;Hibernate 5.2.7 - java.lang.NoSuchMethodError:org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;

完整的堆棧跟蹤

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 
at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:71) 
at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28) 
at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20) 
at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:58) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:77) 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:240) 
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710) 
at quantitativeAnalysis.backend.dataCollector.dataCollectorManager.createFactory(dataCollectorManager.java:280) 
at quantitativeAnalysis.volatilityAnalyzer.volatilityDynamicImpl.openInstance(volatilityDynamicImpl.java:18) 
at frontend.MainFrame.main(MainFrame.java:96) 

我曾嘗試多種方法(其他的Hibernate版本5.2.6 and 5.2.3)並搜索互聯網尋求幫助,但沒有任何建議工作。

例外發生在這裏:

Configuration configuration = new Configuration().configure(); 

    StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 
    try{ 
     factory = configuration.buildSessionFactory(ssrb.build()); 
    }catch(Exception ex){ 
    System.err.println("Failed to configure Sessionfactory"); 
    ex.printStackTrace(); 
} 

我也曾嘗試下面的代碼導致同樣的結果:

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() 
    .configure() // configures settings from hibernate.cfg.xml 
    .build(); 

try { 
    factory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 
    }catch(Exception ex){ 
    System.err.println("Failed to configure Sessionfactory"); 
    ex.printStackTrace(); 
    } 

我的hibernate.cfg.xml看起來像這樣

<session-factory> 

    <!-- Database connection settings --> 
    <!-- <property name="connection.driver_class">com.mysql.jdbc.Driver</property> --> 
    <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>   
    <property name="connection.url">jdbc:mysql://localhost:3307/VolatilityData</property> 
    <property name="connection.username">XXX</property> 
    <property name="connection.password">XXX</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> 


    <!-- --> 
    <property name="hbm2dll.auto">create</property> 

    <!-- mapping content --> 
    <mapping resource="resources/BitcoinDaysDestroyed.hbm.xml"/> 
    <mapping resource="resources/BitcoinPrice.hbm.xml"/> 
    <mapping resource="resources/BitcoinTransactions.hbm.xml"/> 

</session-factory> 

我包括與搖籃的罐子如下:

// Apply the java plugin to add support for Java 
apply plugin: 'java' 

// In this section you declare where to find the dependencies of your project 
repositories { 
// Use jcenter for resolving your dependencies. 
// You can declare any Maven/Ivy/file repository here. 
//jcenter() 
mavenCentral() 

maven { 
url "https://maven.elasticsearch.org/releases" 
    } 
} 

dependencies { 
// The production code uses Guava 
compile 'com.google.guava:guava:20.0' 

//QuantitativeAnalysis 

// https://mvnrepository.com/artifact/com.toedter/jcalendar 
compile group: 'com.toedter', name: 'jcalendar', version: '1.4' 

// https://mvnrepository.com/artifact/javax.persistence/persistence-api 
compile group: 'javax.persistence', name: 'persistence-api', version: '1.0.2' 

// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple 
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' 

// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient 
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.2' 

// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore 
compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.5' 

// https://mvnrepository.com/artifact/org.hibernate/hibernate-core 
//compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.6.Final' 

//antlr-2.7.7.jar, compiled from src 
compile files('libs/antlr-2.7.7.jar') 

//classmate-1.3.0.jar, compiled from src 
compile files('libs/classmate-1.3.0.jar') 

//dom4j-1.6.1.jar, compiled from src 
compile files('libs/dom4j-1.6.1.jar') 

//antlr-2.7.7.jar, compiled from src 
compile files('libs/geronimo-jta_1.1_spec-1.1.1.jar') 

//jandex-2.0.3.Final.jar, compiled from src 
compile files('libs/jandex-2.0.3.Final.jar') 

//javassist-3.20.0-GA.jar, compiled from src 
compile files('libs/javassist-3.20.0-GA.jar') 

//jboss-logging-3.3.0.Final.jar, compiled from src 
compile files('libs/jboss-logging-3.3.0.Final.jar') 

//hibernate-commons-annotations-5.0.1.Final.jar, compiled from src 
compile files('libs/hibernate-commons-annotations-5.0.1.Final.jar') 

//hibernate-jpa-2.1-api-1.0.0.Final.jar, compiled from src 
compile files('libs/hibernate-jpa-2.1-api-1.0.0.Final.jar') 

//hibernate-core-5.2.7.Final.jar, compiled from src 
compile files('libs/hibernate-core-5.2.7.Final.jar') 

//c3p0-0.9.5.2, compiled from src 
compile files('libs/c3p0-0.9.5.2.jar') 

//hibernate-c3p0-5.2.7.Final.jar, compiled from src 
compile files('libs/hibernate-c3p0-5.2.7.Final.jar') 

//mchange-commons-java-0.2.11.jar, compiled from src 
compile files('libs/mchange-commons-java-0.2.11.jar') 

// https://mvnrepository.com/artifact/mysql/mysql-connector-java 
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.5' 

//QualitatitveAnalysis 

// https://mvnrepository.com/artifact/log4j/log4j 
compile group: 'log4j', name: 'log4j', version: '1.2.17' 

// https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch 
compile group: 'org.elasticsearch', name: 'elasticsearch', version: '2.1.0' 

// https://mvnrepository.com/artifact/org.elasticsearch.plugin/shield 
compile group: 'org.elasticsearch.plugin', name: 'shield', version: '2.1.0' 

// https://mvnrepository.com/artifact/com.google.code.gson/gson 
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' 

// https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core 
compile group: 'org.twitter4j', name: 'twitter4j-core', version: '4.0.6' 

// https://mvnrepository.com/artifact/javax.json/javax.json-api 
compile group: 'javax.json', name: 'javax.json-api', version: '1.0' 

//jReddit Jar, compiled from src 
compile files('libs/jReddit-1.0.4-SNAPSHOT.jar') 

// Use JUnit test framework 
testCompile 'junit:junit:4.12' 
} 

任何幫助或建議高度讚賞

+0

看起來像hibernate和其他庫的不兼容版本。請添加完整的堆棧跟蹤 – Jens

+0

http://stackoverflow.com/questions/37861063/spring-4-3-0-release-hibernate-5-0-9-final-missing-sessionfactoryimplementor-g可能會幫助您 –

+0

感謝您的回覆,我已經添加了完整的堆棧跟蹤。 我已經看到了stackoverflow上的另一個問題,但他們使用Spring,我沒有使用我的Java應用程序。 – Marcel

回答

6

導致此問題通過對具有JPA API的舊的,不兼容副本類路徑。

具體來說:

  • javax.persistence:持久性的API:1.0.2

衝突與JPA 2.1 API的正確版本:

  • org.hibernate作爲。 javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final

不幸的是,Maven 3仍然無法處理相同工件的重新分配,這些工件有時是必需的。

+0

另請參見[哪裏可以找到JPA2 Maven依賴?](http://stackoverflow.com/q/6836772/772981) – Jarekczek

+0

我在我的回答中提到過:org.hibernate.javax.persistence:hibernate-jpa-2.1 -api:1.0.0.Final – Sanne

+0

但是也可以在沒有org.hibernate的情況下獲得JPA2。 – Jarekczek

1

你有什麼版本的Gradle?

我問,因爲我在升級Gradle後出現同樣的錯誤,從3.54.3。相同的Hibernate版本(5.2.9),相同的Spring Boot(1.5.8),但在Gradle 3.5. - 確定,4.3失敗。

我測試過的最新版本對我來說工作正常3.5.1。我已測試版本從4.04.4-rc-6(最新在此刻)。

distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip 
相關問題