如何在Intellij中使用H2和SQLite中的Kotlin

当我尝试在Intellij中使用SQLite或H2中的Kotlin时,Intellij给了我这个错误:

Exception in thread "main" java.lang.ClassNotFoundException: org.h2.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.jetbrains.exposed.sql.Database$Companion.connect(Database.kt:91) at org.jetbrains.exposed.sql.Database$Companion.connect$default(Database.kt:90) at MainKt.main(main.kt:9) 

这是我的Gradle文件:

 buildscript { ext.kotlin_version = '1.2.20' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "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' } compileKotlin { kotlinOptions.jvmTarget = "1.8" } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" } 

这是我的Kotlin文件,我尝试使用Expose与H2e进行一些数据持久性的连接:

 import org.jetbrains.exposed.sql.StdOutSqlLogger import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.Table import org.jetbrains.exposed.sql.insert import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.selectAll fun main(args: Array) { Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver") transaction { logger.addLogger(StdOutSqlLogger) val stPeteId = Cities.insert { it[name] = "St. Petersburg" } get Cities.id println("Cities: ${Cities.selectAll()}") } } object Cities : Table() { val id = integer("id").autoIncrement().primaryKey() val name = varchar("name", 50) } data class City(val id: Int, val name: String) 

如何在数据库中使用Kotlin? 这不适用于Android; 只是Intellij中的一个个人项目,我最终想在PC上使用它。

你真的需要H2驱动程序,你是在java还是在kotlin。 将com.h2database:h2依赖项添加到您的gradle文件中,并添加maven中心(如果需要)。

顺便说一下,你的kotlin代码没有问题。 如果这样从java调用,这也是行不通的,因为你错过了依赖关系。