在尝试使用Apache Derby DB(又名JavaDB,曾经是JDK的一部分(作为嵌入式内存数据库进行测试时,我遇到了HikariCP抛出的ClassNotFoundException
无法实例化org.apache.derby.jdbc.EmbeddedDriver
。
通过Maven建立的项目。Derby依赖项是:
<dependency>
<artifactId>derby</artifactId>
<groupId>org.apache.derby</groupId>
<version>10.15.2.0</version>
<scope>test</scope>
</dependency>
HikariCP配置为:
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.apache.derby.jdbc.EmbeddedDriver");
config.setJdbcUrl("jdbc:derby:memory:TestsDB;create=true");
return new HikariDataSource(config);
很少有线程提到ClientDriver
,但我确实需要EmbeddedDriver
来进行内存JDBC访问。
有什么想法吗?
显然,从Derby版本10.14.*
到10.15.*
,情况发生了变化。
后者(我正在使用(的JAR中确实没有这样的类。
在对源代码进行了一些搜索后,我发现org.apache.derby.jdbc.EmbeddedDriver
已经移到了工具JAR中,所以请确保也将以下依赖项添加到pom.xml
中:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.15.2.0</version>
<scope>test</scope>
</dependency>
注意:当然,调整这个工件的版本,使其与主工件的版本相同,无论您的情况如何。
致ApacheDerby的伙计们:如果这个更改是完全有意的,我建议更改主要的Derby工件描述,它仍然误导性地声明"包含核心ApacheDerby数据库引擎,该引擎还包括嵌入式JDBC驱动程序";(重点是我[YG](。