Я создаю приложение, используя Spring MVC и Hibernate. Я еще не интегрировал Hibernate с Spring (новый для обоих) и хотел, чтобы сеанс можно было сначала открыть с помощью Hibernate.Получение java.lang.NoSuchMethodError при попытке подключения к Oracle через Hibernate
Я создал простую функцию для тестирования и в настоящее время получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/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>
структура
файла для моего проекта:
Мысль о моем подходе: Я понимаю, что ошибка броска имеет отношение к проблеме, связанной с тем, как называется функция. Обычно java.lang.NoSuchMethodError возникает, когда функция Foo библиотеки Bar вызывает версию 2.0 вместо 3.0. Я дважды проверял свои зависимости и пытался перестроить проект, но я все еще сталкиваюсь с той же проблемой. Я также попробовал шаблонный код IntelliJ для Hibernate для проверки соединений и по-прежнему получил ту же ошибку.
У вас, вероятно, есть конфликт зависимости; вы включаете версию X некоторой библиотеки, в то время как Hibernate нуждается в версии Y. См. эти [инструкции] (https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency- tree.html) о том, как найти конфликты с Maven. – Jesper
@Jesper вы правы. Были ли некоторые дополнительные файлы JAR, лежащие в моей библиотеке. Удалили их, и теперь это работает как шарм. Пожалуйста, опубликуйте его как ответ, чтобы я мог дать вам весь кредит :) – abhi