从java中的kotlin脚本文件加载类

时间:2018-05-31 16:11:20

标签: java scripting kotlin

Groovy有一个GroovyClassLoader,可以使用GroovyClassLoader.parseClass(String script)将groovy类加载到java应用程序中,然后在以后实例化并调用它的方法。

有没有办法用kotlin脚本文件(.kts)执行此操作?

我知道我可以使用jsr223来评估一个使用ScriptEngine.eval(String script)的{​​{1}}的脚本文件,但是对一个只是一个类声明的脚本调用eval会返回null,我不能这样做访问该类。

我添加了正确的依赖项并且正确加载了kotlin脚本引擎工厂(我可以在KotlinJsr223JvmLocalScriptEngineFactory的结果中看到它),我只是因为eval而得到null。假设这是因为脚本本身并没有真正返回任何内容,只需定义一个类。这就是我试图加载的脚本文件:

new ScriptEngineManager().getEngineFactories()

我使用的是kotlin-stdlib,kotlin-compiler和kotlin-script-util 1.2.41版。

使用kotlin脚本无法实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您可以从脚本中返回类本身。例如,脚本的最后一行可能是TestScript::class。这为您提供了KClass,然后可以实例化。为了给您一个真实的例子,您可以看到我如何实例化从脚本here获得的类。