Где находится встроенный драйвер Derby?

#java #spring #spring-boot #derby

#java #весна #пружинный ботинок #derby

Вопрос:

У меня есть проект Spring Boot с Gradle, для которого я хочу использовать Derby. Здесь у меня есть следующие банки (мне понадобится только первая, но я пробую и вторую).:

 implementation("org.apache.derby:derby:10.15.2.0")
implementation("org.apache.derby:derbyclient:10.15.2.0")
 

Это фактически дает мне 3 банки (включая инструменты), и ни у одной из них нет встроенного драйвера, который нужен Spring. Что это дает?

 spring.datasource.url=jdbc:derby:/tmp/nhsta_derby;create=true
 
 Property: driver-class-name
    Value: org.apache.derby.jdbc.EmbeddedDriver
    Origin: "driverClassName" from property source "source"
    Reason: Failed to load driver class org.apache.derby.jdbc.EmbeddedDriver in either of HikariConfig class loader or Thread context classloader
 

Это ничего не находит:

find ~/.gradle/caches/ -name 'derby*.jar' -exec jar -tf {} ; | grep EmbeddedDriver

Комментарии:

1. Я скачал «db-derby-10.14.2.0-lib.zip » отсюда . Я распаковал его. Файл derby.jar содержит 1952 Fri Apr 06 18:09:22 EDT 2018 org/apache/derby/jdbc/EmbeddedDriver.class

Ответ №1:

Spring Boot не поддерживает Derby 10.15, поскольку для него требуется Java 9 или более поздняя версия, а Spring Boot в настоящее время поддерживает Java 8 и более поздние версии. Если вы разрешите управлению зависимостями Spring Boot управлять версией (опуская версию при объявлении зависимости), вы будете использовать 10.14, где org.apache.derby:derby модуль содержит ожидаемый EmbeddedDriver класс:

 implementation("org.apache.derby:derby")
 

Комментарии:

1. Для ясности, не требуется ли команда драйвера для встроенного или серверного режима, развернутого как приложение spring jpa?

2. Что вы подразумеваете под «командой драйвера»? Возможно, это лучше решить, задав новый вопрос, а не в комментариях к ответу.

Ответ №2:

Он org.apache.derby.jdbc.EmbeddedDriver.class находится внутри implementation("org.apache.derby:derbytools:10.15.2.0") .