问题标签 [kotlin-script]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
414 浏览

kotlin - Kotlin 脚本无法实例化类

Ken Kousen的 Kotlin Cookbook 尝试——1.5 执行 Kotlin 脚本会产生“无法实例化类”错误。

kotlin version 1.3.50

0 投票
1 回答
449 浏览

kotlin - Kotlin 脚本 (.kts) 文件——没有 println?

我正在尝试使用 Kotlin 作为脚本语言。根据他们的文档,您应该能够在 Kotlin 脚本中运行顶级代码。

我使用他们的官方示例编写的一个简单的“Hello, World”程序不输出任何文本。它编译/解释,成功终止,但 println() 语句似乎什么都不做

有谁知道我在哪里可以找到使用 Kotlin 作为脚本语言时实际支持的内容的表格/摘要?我在使它做一个简单的打印语句时缺少什么。

我正在使用通过 sdkman 在 Ubuntu 上安装的 Kotlin SDK 运行。从 Ubuntu 提供的 vanilla 终端运行。预期的输出将是“Hello,World!”的行。显示,但根本没有输出。

0 投票
1 回答
1293 浏览

java - 评估具有依赖关系的 kotlin 脚本文件

问题:如何在运行时执行一组 kotlin 文件并从中返回一个kts文件的结果?

我编写系统,它能够执行kts带有指令的文件。目前它支持以下执行模式:

main.kts- 该文件将被执行。它应该返回List<Step>

但是,用户可以将任何其他文件放在同一文件夹中。例如,文件夹可以包含以下文件:

  • main.kts
  • Constants.kt// 它有一些常量
  • Helpers.kt// 一些额外的方法

ScriptEngine具有评估代码的方法,但是它只有一个输入文件。

问题:如何要求 ScriptEngine 将类编译到类路径中,但只执行其中一个?

此解决方案不正确,因为文件顺序很重要(例如,如果第一个文件依赖于最后一个文件,则编译失败):

另一种解决方案(可能导致不可预测的编译波动):

所以,问题:如何在运行时执行一组 kotlin 文件并kts从它们返回一个文件的结果?

0 投票
2 回答
1098 浏览

android - 如何在 Android 项目中使用 Kotlin 工作表

我想在我的 Android 项目中使用Kotlin 工作表来添加代码草稿,例如:

草稿.ws.kts

工作表本身正在工作:

但是构建我的 Android 应用程序失败,输出如下:

依赖是implementation "org.jetbrains.kotlin:kotlin-script-runtime:1.3.70"

0 投票
1 回答
536 浏览

maven - 在 Kscript 中导入库时如何解决“java.lang.NoClassDefFoundError”?

我是 Kotlin 脚本的新手,我正在尝试使用 Kscript 导入库。我一直在关注教程,并尝试了一个非常简单的脚本(如下),它可以导入几个库。当我运行脚本时,我收到以下错误(我尝试执行的任何导入都会发生此错误)。当我删除导入时,脚本运行良好。关于如何修复代码中的导入的任何想法?

错误信息:

我的代码:

0 投票
1 回答
409 浏览

kotlin - 每当我尝试运行任何脚本时,Kotlin 脚本支持都会因“参数数量错误”而失败

我正在尝试使用 运行一个非常基本的脚本org.jetbrains.kotlin:kotlin-scripting-jvm,但是当我不应该得到两个错误时,我得到了两个错误。这是我的脚本:

我希望得到 aResultWithDiagnostics.Success和 a resultValue1但我得到 a Failure,这些报告:

  • 该表达式未使用
  • 参数数量错误

即使我通过修改我的脚本来修复警告

我仍然得到wrong number of arguments error. 我检查了来源,似乎在

参数为空。我究竟做错了什么?这就是我尝试运行脚本的方式:

这是我得到的这个wrong number of arguments错误的堆栈跟踪:

0 投票
1 回答
224 浏览

kotlin - kscript:如何获取当前文件的目录?

有没有办法在 kotlin 脚本中获取当前脚本位置的目录?

我可以用 bash 实现这一点

或者

0 投票
1 回答
893 浏览

kotlin - 如何在 kotlin 脚本中包含 jar 文件

我想从我的 kotlin 脚本文件中分离出一些通用代码,以便可以重复使用。

我这样做了:

// MyLib.kt

我编译了这个文件来创建一个 jar 文件:

然后我创建了一个脚本文件:

// myScript.kts

但我无法编译脚本文件,因为它既不识别 myLib 包也不识别 say_hello() 函数。

这样做的正确方法是什么。

问题更新: 我正在使用 kscript 来运行我的脚本。打字很多,例如,

每次我都必须运行脚本,从而破坏了使用 kscript 的动机。

有没有什么办法让我不需要每次命令行都给出 jar 的路径。相反,我想以 kscript 方式使用它,即

0 投票
1 回答
1077 浏览

kotlin - Gradle 6.6.1 和 Kotlin 1.4 - 运行时版本冲突

我使用最新的 Gradle (v. 6.6.1) 和最新的 Kotlin (v. 1.4)。

buildSrc项目定义了所有 Kotlin 版本。不幸的是,它收到以下错误。

buildSrc项目有以下build.gradle.kts文件:

正如您在上面的警告中看到的,类路径中有相同的库,但版本不同:

  1. 使用 gradle 的 1.3 版。
  2. 来自 kotlin 插件的 1.4 版。

如何解决这个问题?

0 投票
1 回答
85 浏览

java - 什么是 java.constructors.single()?

我正在学习 Kotlin 如何评估脚本,我在BasicJvmScriptEvaluator中看到了如下代码:

我不明白代码java.constructors.single(),没有名为 java.constructors 的包。我应该如何理解这段代码?