Java 如何在Intellij中将Kotlin与H2和SQLite一起使用
当我尝试将Intellij中的Kotlin与SQLite或H2一起使用时,Intellij会出现以下错误:Java 如何在Intellij中将Kotlin与H2和SQLite一起使用,java,intellij-idea,kotlin,kotlin-exposed,Java,Intellij Idea,Kotlin,Kotlin Exposed,当我尝试将Intellij中的Kotlin与SQLite或H2一起使用时,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
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文件,我尝试在其中使用它与H2e接口,并使用Kotlin实现一些数据持久性:
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<String>) {
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)
import org.jetbrains.exposed.sql.StdOutSqlLogger
导入org.jetbrains.exposed.sql.Database
导入org.jetbrains.exposed.sql.Table
导入org.jetbrains.exposed.sql.insert
导入org.jetbrains.exposed.sql.transactions.transaction
导入org.jetbrains.exposed.sql.selectAll
趣味主线(args:Array){
Database.connect(“jdbc:h2:mem:test”,driver=“org.h2.driver”)
交易{
logger.addLogger(StdOutSqlLogger)
val stPeteId=Cities.insert{
it[名称]=“圣彼得堡”
}获取城市id
println(“城市:${Cities.selectAll()}”)
}
}
目标城市:表(){
val id=integer(“id”).autoIncrement().primaryKey()
val name=varchar(“name”,50)
}
数据类城市(val id:Int,val名称:String)
如何将Kotlin与数据库一起使用?这不是针对Android的;这只是Intellij中的一个个人项目,我想最终在PC上使用。无论您使用的是java还是kotlin,您实际上都需要h2驱动程序。 将com.h2database:h2依赖项添加到gradle文件中,并根据需要添加maven central
顺便说一下,你的kotlin代码没有问题。如果像这样从java调用,这也不起作用,因为您缺少依赖项。无论您使用的是java还是kotlin,您实际上都需要h2驱动程序。 将com.h2database:h2依赖项添加到gradle文件中,并根据需要添加maven central
顺便说一下,你的kotlin代码没有问题。如果像这样从java调用,这也不起作用,因为您缺少依赖项。我将.jar文件添加到库中,因此它应该位于类路径中。我以前也从未使用过Gradle,所以我认为这是一个Gradle问题。如果您使用IntelliJ,请尝试将jar作为库添加到模块设置中。如:单击项目->按F4->模块//依赖项->+如果您想使用Gradle文件,请检查以下答案:谢谢!我在Gradle文件的dependencies部分添加了
compile“com.h2database:h2.1.4.196”
,它可以正常工作。我将.jar文件添加到库中,因此它应该在类路径中。我以前也从未使用过Gradle,所以我认为这是一个Gradle问题。如果您使用IntelliJ,请尝试将jar作为库添加到模块设置中。如:单击项目->按F4->模块//依赖项->+如果您想使用Gradle文件,请检查以下答案:谢谢!我在Gradle文件的dependencies部分添加了compile“com.h2database:h2.1.4.196”
,效果很好。