durid If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
时间: 2025-01-09 11:44:05 浏览: 75
### 解决 Durid Embedded Database Not On Classpath 的方案
对于嵌入式数据库未能正确加载到类路径中的问题,通常是因为配置文件或依赖项设置不正确。为了确保嵌入式数据库能够正常工作并被应用程序识别,需遵循特定的配置指南。
#### 配置 Maven 或 Gradle 项目以包含 H2 数据库驱动程序
要使嵌入式数据库能够在 Java 应用程序中通过类路径访问,必须先将其 JAR 文件加入项目的构建工具配置中。以下是针对 Maven 和 Gradle 的具体操作方法:
##### 对于 Maven 用户,在 `pom.xml` 中添加如下依赖:
```xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version><!-- 使用最新稳定版本 -->
<scope>runtime</scope>
</dependency>
```
##### 对于 Gradle 用户,则应在 `build.gradle` 添加以下内容:
```groovy
implementation 'com.h2database:h2:1.4.200'// 使用最新稳定版本
```
#### 设置正确的 JDBC URL 及其他连接属性
当定义数据源时,应指定合适的 JDBC 连接字符串来指向内存内或是基于文件系统的数据库实例。例如,使用相对路径创建一个新的测试数据库可以这样写:
```java
String url = "jdbc:h2:./data/test"; // 创建位于当前目录下的 data 文件夹内的 test.db 文件作为存储介质
Properties props = new Properties();
props.setProperty("user", "");
props.setProperty("password", "");
try (Connection conn = DriverManager.getConnection(url, props)) {
Statement stmt = conn.createStatement();
}
catch(SQLException e){
System.err.println(e.getMessage());
}
```
需要注意的是,如果希望将此数据库视为只读资源,则其名称应当以前导斜杠开头,表明相对于类路径的位置[^1]。
#### 修改 Spring Boot 应用程序配置文件 application.properties/yml 来启用内置数据库支持
假设正在开发一个 Spring Boot 应用,并打算利用其中默认提供的 HikariCP 连接池而非 Druid(尽管两者功能相似),那么可以在配置文件里做相应调整:
```properties
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MYSQL
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=
spring.datasource.password=
# 如果确实要用 Druid 替代 HikariCP,请取消下面两行注释
# spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# spring.datasource.initialSize=5
```
以上措施有助于解决因缺少必要的 jar 包而导致无法找到嵌入式数据库的问题;同时也展示了如何适当地初始化和管理这些类型的持久化层组件。
阅读全文
相关推荐












