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
相关产品推荐
相关产品推荐

