2017-01-20 10 views
5

podczas korzystania z Hibernate 5.2.7 w projekcie Gradle Java, aby połączyć się z MariaDB 10.1.19, Otrzymuję 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;

Kompletny StackTrace

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) 

Próbowałem kilka podejść (wersje inne Hibernate 5.2.6 i 5.2.3) i przeszukały internet w poszukiwaniu pomocy, ale żadna z sugestii nie zadziałała.

Wyjątek występuje tutaj:

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(); 
} 

Próbowałem również następujący kod prowadzące do tego samego rezultatu:

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(); 
    } 

Moja hibernate.cfg.xml wygląda to

<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> 

Słoiki I obejmują z Gradle są następujące:

// 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' 
} 

Każda pomoc lub rada jest wysoko ceniona

+0

Wygląda jak niezgodne wersje hibernacji i innej biblioteki.Dodaj pełną ścieżkę stosu – Jens

+0

http://stackoverflow.com/questions/37861063/spring-4-3-0-release-hibernate-5-0-9-final-missing-sessionfactoryimplementor-g może Ci pomóc –

+0

Dzięki za twój odpowiedzi, dodałem kompletny stacktrace. Widziałem inne pytanie na stackoverflow, ale używają Spring, którego nie używam do mojej aplikacji Java. – Marcel

Odpowiedz

6

ten problem jest spowodowany przez mając starą niezgodne kopię API JPA na Ścieżka klas.

Konkretnie:

  • javax.persistence: wytrwałość-api: 1.0.2

Konflikty z prawej wersji JPA 2.1 API:

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

Niestety Maven 3 nadal nie jest w stanie obsłużyć ponownych dystrybucji tych samych artefaktów, które czasami są konieczne.

+0

Zobacz także [Gdzie mogę znaleźć zależność JPA2 Maven?] (Http://stackoverflow.com/q/6836772/772981) – Jarekczek

+0

Wspomniałem o tym w mojej odpowiedzi: org.hibernate.javax.persistence: hibernate-jpa-2.1 -api: 1.0.0.Final – Sanne

+0

Ale jest również możliwe uzyskanie JPA2 bez 'org.hibernate'. – Jarekczek

1

Jaką wersję tabletu Gradle masz?

Pytam, ponieważ mam ten sam błąd, który występuje po uaktualnieniu Gradle z 3.5 do 4.3. Ta sama wersja Hibernate (5.2.9), ten sam Spring Boot (1.5.8), ale w Gradle 3.5. - OK, 4.3 kończy się niepowodzeniem.

Testowałem, a najnowsza, działająca dobra wersja była dla mnie 3.5.1. Przetestowałem wersje od 4.0 do 4.4-rc-6 (najnowsze w tej chwili).

distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip 
Powiązane problemy