- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 Gradle Java 项目中使用 Hibernate 5.2.7 连接到 MariaDB 10.1.19 时,我在线程“main”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 和 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>
我在 Gradle 中包含的 jar 如下:
// 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'
}
非常感谢任何帮助或建议
最佳答案
此问题是由于类路径上有旧的、不兼容的 JPA API 副本引起的。
具体来说:
与 JPA 2.1 API 的正确版本冲突:
不幸的是,Maven 3 仍然无法处理相同工件的重新分发,这有时是必要的。
关于java - Hibernate 5.2.7 - java.lang.NoSuchMethodError : org. hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761637/
如标题:如何获取 SessionFactoryImplementor 的实例?我在代码中破解的是: SessionFactoryImplementator sfi = (SessionFac
我正在尝试使用 spring 3.1.1.RELEASE 迁移到 hibernate 4.1.0.Final以下是我的 hibernate 配置:
我在使用 Hibernate 5.2.10 连接到 Mysql 数据库时遇到问题。我使用maven。 问题是这样的: org.springframework.beans.factory.BeanCre
请帮助解决我的问题,当我尝试在 Apache Tomcat 上运行我的程序时,出现以下错误。我在 struts2 中使用 hibernate Core (5.2.9.Final) 和 Hibernat
@Configuration @EnableTransactionManagement public class DataSourceConfig { @Bean(destroyMethod
我在我的应用程序中使用 Spring 4.3.0.RELEASE 和 Hibernate 5.0.9.Final,并且不断出现 java.lang.NoSuchMethodError: org.hib
我正在关注 this blogpost设置 Hibernate Persistence 层。 我当前的 pom.xml 看起来像这样: 4.0.0 org.springframework proj
我知道 this问题和它引用的 Spring JIRA 问题,但是,我使用的是最新版本的 Hibernate 和 Spring,并且在运行单元测试时仍然得到下面堆栈跟踪指示的相同错误: Cau
在 Gradle Java 项目中使用 Hibernate 5.2.7 连接到 MariaDB 10.1.19 时,我在线程“main”java.lang.NoSuchMethodError: org
我正在使用 Hibernate Core 4.1.7 和 Spring 3.1.2 尝试一个简单的 Hibernate 分片示例(是的,奇怪,4 年前发布的 3.0.0.Beta2),并在 sessi
我是一名优秀的程序员,十分优秀!