在尝试使用Apache Derby DB (也称为JavaDB,曾经是JDK的一部分)作为嵌入式内存中DB进行测试时,我遇到了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访问。
有什么想法吗?
发布于 2021-03-31 04:46:09
显然,从Derby版本的10.14.*到版本10.15.*,情况发生了变化。
后者(我正在使用)在它的JAR中确实没有这样的类。
在对源代码进行了一些搜索之后,我发现org.apache.derby.jdbc.EmbeddedDriver已经被移到了tools JAR中,所以也要确保在您的pom.xml中添加以下依赖项:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.15.2.0</version>
<scope>test</scope>
</dependency>注意:当然,请将此工件的版本调整为与主工件相同的版本,无论它在您的情况下是什么。
致Apache Derby人员:如果此更改完全出于意图,我建议更改主Derby工件描述,该描述仍然误导性地指出“包含核心Apache Derby数据库引擎,还包括嵌入式JDBC驱动程序”(重点是我的YG)。
https://stackoverflow.com/questions/66878264
复制相似问题