我有一个Kotlin Gradle项目。
如果我创建一个.kts
文件,则当它位于/src/main/kotlin
文件夹中时,它将在InteliJ中运行,除了 。
IDEA用红色突出显示整个文件。 Gradle抛出编译异常。 例外是
...src/main/kotlin/test.kts: (3, 1): Cannot access script base class 'kotlin.script.templates.standard.ScriptTemplateWithArgs'. Check your module classpath for missing or conflicting dependencies`.
出什么问题了?
我的build.gradle
:
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.0-rc-131'
}
group 'kotlin.tutorials.coroutines'
version '1.0-SNAPSHOT'
repositories {
maven { url 'http://dl.bintray.com/kotlin/kotlin-eap' }
mavenCentral()
jcenter()
maven { url "https://dl.bintray.com/kotlin/ktor" }
}
ext.ktor_version = '1.0.0-alpha-1'
ext.coroutines_version = '0.30.2-eap13'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "io.ktor:ktor-server-netty:$ktor_version"
compile "ch.qos.logback:logback-classic:1.2.3"
//KTOR features
compile "io.ktor:ktor-jackson:$ktor_version"
compile "io.ktor:ktor-auth:$ktor_version"
compile "io.ktor:ktor-auth-jwt:$ktor_version"
compile "io.ktor:ktor-freemarker:$ktor_version"
compile "io.ktor:ktor-html-builder:$ktor_version"
}
compileKotlin.kotlinOptions.jvmTarget = "1.8"
compileTestKotlin.kotlinOptions.jvmTarget = "1.8"
答案 0 :(得分:2)
.kts
文件应转到src/main/resources
文件夹,因为src/main/kotlin
用于.kt
文件。
从这个意义上说,脚本是完全不同的动物,您应该使用KtsRunner之类的东西来执行它们。
相关问题是here。
如果您只想使用IDEA中的脚本,则应该使用开箱即用的Scratch files。
答案 1 :(得分:1)
结果很简单。
编译器找不到通常添加到任何Kotlin脚本类路径中的实用程序类。在我的build.gradle
中添加一个依赖项可以解决此问题:
dependencies {
compile "org.jetbrains.kotlin:kotlin-scripting-jvm"
}
我创建了2张票证,以改善InteliJ中对Kotlin脚本的支持:
如果您关心这些功能,请对其进行投票!