Kotlin:Kotlin脚本(.kts)不能使用常规代码?

时间:2016-03-24 21:07:56

标签: kotlin scripting

在我的图书馆代码库中,我有这个包函数:fun sayHello() = println("Hello there!")
该函数在包org.jire.pomade

中定义

我想在 .kts 文件中使用此功能,如下所示:sayHello()

不幸的是,我似乎无法将代码与Kotlin自己的stdlib分开来在Kotlin脚本文件中工作。

我的整个剧本:

import org.jire.pomade.sayHello

sayHello()

运行脚本的结果:

pomade.kts:1:12: error: unresolved reference: jire
import org.jire.pomade.sayHello
           ^
pomade.kts:3:1: error: unresolved reference: sayHello
sayHello()
^

有人知道为什么会这样吗?感谢。

4 个答案:

答案 0 :(得分:8)

这是Kotlin插件中的一个错误:https://youtrack.jetbrains.com/issue/KT-11618

答案 1 :(得分:5)

我建议使用holgerbrandl/kscript来管理脚本的依赖关系。

答案 2 :(得分:2)

从1.3开始,在Kotlin脚本中提供了对Maven导入的实验性支持。

看看https://blog.jetbrains.com/kotlin/2018/09/kotlin-1-3-rc-is-here-migrate-your-coroutines/#scripting

@file:Repository("https://jcenter.bintray.com")
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-html-jvm:0.6.11")

import kotlinx.html.*
import kotlinx.html.stream.*

print(createHTML().html {
    body {
        h1 { +"Hello, World!" }
    }
})

这里是KEEP:https://github.com/Kotlin/KEEP/blob/master/proposals/scripting-support.md

答案 3 :(得分:0)

替代方案是使用Kotlin REPL。