Springboot + JPA (Hibernate) + Oracle AbstractMethodError не определяет или не наследует реализацию isValid (int) - PullRequest
0 голосов
/ 02 апреля 2020
  • JavaJDK 1.13
  • Springboot 2.2.6
  • Spring Data JPA
  • Oracle 10g

Я являюсь новичок в использовании Spring boot, и когда я попытался запустить демонстрационную программу, она сообщала об исключениях как:
Caused by: java.lang.AbstractMethodError: Receiver class oracle.jdbc.driver.T4CConnection does not define or inherit an implementation of the resolved method 'abstract boolean isValid(int)' of interface java.sql.Connection.

Я пробовал много решений в Интернете (например, обновить драйвер до ojdbc7 или выше, в то время как я использовал ojdbc8 с самого начала и даже пытался загрузить ojdbc8 и ojdbc10 с веб-сайта Oracle 19 c, но никто не работал).

Следуя советам @JensSchauder Я заглянул в класс oracle.jdbc.driver.T4CConnection и обнаружил, что на самом деле не существует такого метода, называемого boolean isValid(int), но вместо этого boolean isValidLight(int).

Вот снимок экрана:
ScreenShoot Здесь логическое значение isValidLight ( int var1)

Вот список ojdbcs, которые я пробовал:

  • ojdbc8: 12.2.0.1
  • ojdbc7: 12.1.0.2
  • ojdbc8: 19.3.0.0 (используется)
  • ojdbc10: 19.3.0.0

Как следует это исправить? Может быть, сдаться Oracle?

Спасибо за все ваши советы.

1 Ответ

0 голосов
/ 02 апреля 2020

Здесь что-то действительно подозрительное. Метод, который ищет Хикари, был введен в Java 1.6, поэтому он обязательно должен быть там с ojdbc8.

Я бы попробовал следующее, чтобы лучше понять, что происходит.

  1. проверьте, что зависимость действительно правильно загружена.
  2. найдите класс Connection в IDE и проверьте его, есть ли у него метод isValid или нет. Я сильно подозреваю, что это имеет место.
  3. добавьте точку останова в строку, где Hikari генерирует исключение, и проверьте, какой объект он проверяет.

Это уже может дать достаточно подсказок для отладки, если нет, обновите ваши вопросы с информацией, которую вы нашли.

...