【问题标题】:Where is the Derby embedded driver?Derby 嵌入式驱动程序在哪里?
【发布时间】:2021-06-24 21:43:16
【问题描述】:

我有一个带有 Gradle 的 Spring Boot 项目,我想使用 Derby。我这里包含以下罐子(我应该只需要第一个,但我也在尝试第二个):

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

这实际上给了我 3 个 jars(包括工具),没有一个拥有 Spring 想要的 EmbeddedDriver。什么给了?

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

【问题讨论】:

  • 我从here 下载了“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

标签: java spring spring-boot derby


【解决方案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")

【讨论】:

  • 为了清楚起见,作为 spring jpa 应用程序部署的嵌入式或服务器模式是否不需要驱动程序命令?
  • “驱动程序命令”是什么意思?通过提出一个新问题而不是在 cmets 中给出一个答案可能会更好地解决这个问题。
【解决方案2】:

org.apache.derby.jdbc.EmbeddedDriver.class 位于implementation("org.apache.derby:derbytools:10.15.2.0")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多