我正在使用Spring MVC和Hibernate构建一个应用程序。我还没有将Hibernate与Spring集成(两者都是新的),并希望确保可以通过Hibernate首先打开会话。
我创建了一个简单的测试功能,目前收到以下错误:
线程中的异常" main" java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl(Ljava / UTIL / LinkedHashSet; Lorg /休眠/引导/注册表/类装入/ SPI / ClassLoaderService):V
我的日志告诉我,当我尝试使用StandardServiceRegistryBuilder().applySettings()
函数调用时会发生错误。
我已经将我的示例函数放在下面,试图创建一个连接(请注意它是无效的,除了尝试捕获任何异常之外,实际上并没有做任何事情)
public static void main (String [] args) {
testHibernate();
}
public static void testHibernate() {
try {
String hibernateFilePath = "src/main/java/hibernate.cfg.xml";
File hibernateFile = new File(hibernateFilePath);
Configuration configuration = new Configuration().configure(hibernateFile);
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
} catch (Exception e) {
e.printStackTrace();
}
}
这是我的hibernate.cfg.xml文件:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:oracle://servername.website.com:12345/dbname678</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
</session-factory>
</hibernate-configuration>
我项目的文件结构:
关于我的方法的想法:我知道抛出的错误与调用函数的方式有关。通常,当库Bar的函数Foo调用版本2.0而不是3.0时,会发生java.lang.NoSuchMethodError。我仔细检查了我的依赖项并尝试重建项目,但我仍然面临同样的问题。我还尝试使用IntelliJ的Hibernate样板代码来测试连接,但仍然收到完全相同的错误。
答案 0 :(得分:1)
你可能有依赖冲突,例如你有一些库的X版,而Hibernate需要同一个库的版本Y.
您可以使用以下命令将Maven用于find dependency conflicts:
mvn dependency:tree -Dverbose
它将打印一个依赖树,并指出哪些库彼此冲突。