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脚本无法实现这一目标吗?
答案 0 :(得分:0)
您可以从脚本中返回类本身。例如,脚本的最后一行可能是TestScript::class
。这为您提供了KClass
,然后可以实例化。为了给您一个真实的例子,您可以看到我如何实例化从脚本here获得的类。