You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ中Kotlin结合H2/SQLite报错及数据库使用方案咨询

解决Kotlin + Exposed对接H2/SQLite时的ClassNotFoundException问题

你遇到的ClassNotFoundException: org.h2.Driver本质是运行时找不到H2数据库驱动,而且你的Gradle配置里还有个容易踩的小坑,咱们一步步解决:

1. 修复Gradle依赖配置

你的buildscript块里错误地把org.h2.Driver放到了构建脚本的classpath中——buildscript是给Gradle自身用的(比如加载Kotlin插件),完全不是项目运行时需要的依赖。咱们要把H2驱动移到项目的dependencies块里,同时补全正确的依赖坐标:

修改后的完整Gradle配置:

buildscript {
    ext.kotlin_version = '1.2.20'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // 删掉了错误的org.h2.Driver配置
    }
}

group '1'
version '1.0-SNAPSHOT'

apply plugin: 'kotlin'

repositories {
    mavenCentral()
    maven { url "https://dl.bintray.com/kotlin/exposed" }
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile 'org.jetbrains.exposed:exposed:0.9.1'
    // 添加H2数据库驱动,这里选了兼容Kotlin1.2.x的1.4.200版本
    compile 'com.h2database:h2:1.4.200'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

2. 验证代码运行

你的Kotlin代码逻辑是没问题的,修复依赖后重新同步Gradle(点击IntelliJ右上角的"Sync Project with Gradle Files"按钮),再运行main函数,就能正常连接H2内存库、执行插入和查询操作了。

3. 如果要切换到SQLite

如果想换成SQLite数据库,只需要两个小改动:

  • 替换Gradle依赖:
    // 移除H2依赖,添加SQLite驱动
    compile 'org.xerial:sqlite-jdbc:3.36.0.3'
    
  • 修改数据库连接代码:
    // SQLite的JDBC URL,test.db是本地文件(不存在会自动创建)
    Database.connect("jdbc:sqlite:test.db", driver = "org.sqlite.JDBC")
    

内容的提问来源于stack exchange,提问作者Jonathan Dewein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:41:50