簡體   English   中英

嘗試在IntelliJ IDEA中運行Kotlin腳本

[英]Trying to run Kotlin script in IntelliJ IDEA

我正在通過做Kotlin Koans int IntelliJ EduKotlin插件( https://plugins.jetbrains.com/plugin/8186 )學習Kotlin。 在執行任務並在此插件運行時運行它們的同時,我無法創建新的Kotlin腳本並在沒有此插件的情況下運行它。

名為Hello.kt的文件中的示例代碼:

fun hello() : String {
    return "ok"
}

然后我創建派生自“ Kotlin腳本”的新運行配置,將“工作目錄”設置為ProjectName / src文件夾(或ProjectName文件夾,結果相同),並且IDE向我顯示“找不到腳本文件:Hello.kt”警告,如下所示下面的屏幕:

在此處輸入圖片說明

確實,在嘗試運行腳本時,我得到了以下堆棧跟蹤:

"C:\Program Files\Java\jdk1.8.0_74\bin\java" -Dfile.encoding=windows-1250 -classpath C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-compiler.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-runtime.jar org.jetbrains.kotlin.cli.jvm.K2JVMCompiler -script Hello.kt
exception: java.lang.RuntimeException: Failed to evaluate script: kotlin.KotlinNullPointerException
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileScript(KotlinToJVMBytecodeCompiler.kt:263)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileAndExecuteScript(KotlinToJVMBytecodeCompiler.kt:212)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:181)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:49)
at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:181)
at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:138)
at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:57)
at org.jetbrains.kotlin.cli.common.CLICompiler.doMainNoExit(CLICompiler.java:248)
at org.jetbrains.kotlin.cli.common.CLICompiler.doMain(CLICompiler.java:238)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:248)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.kt)
Caused by: kotlin.KotlinNullPointerException
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileScript(KotlinToJVMBytecodeCompiler.kt:475)
... 10 more


Process finished with exit code 2

而且,hello方法被標記為從不使用。 但是,當我將文件擴展名從.kt更改為.ktscript時,此方法被標記為已使用,並且運行代碼的輸出如下:

"C:\Program Files\Java\jdk1.8.0_74\bin\java" -Dfile.encoding=windows-1250 -classpath C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-compiler.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-runtime.jar org.jetbrains.kotlin.cli.jvm.K2JVMCompiler -script Hello.kt

錯誤:找不到源文件或目錄:Hello.kt

Process finished with exit code 1

所以我的問題是:當嘗試在IntelliJ中的獨立Kotlin腳本中創建和運行Kotlin代碼時,我會缺少什么?

獨立的Kotlin腳本文件需要具有.kts擴展名。 如果重命名文件,則還需要確保運行配置已更新為引用文件的新名稱。

另外,如果您創建僅包含函數的任何文件(常規Kotlin文件或.kts文件),則運行腳本不會產生任何輸出,因為不會調用該函數。 要查看一些輸出,您需要在腳本中調用該函數:

fun hello(): String {
    return "ok"
}

println(hello())

您看到的stacktrace是Kotlin中的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM