繁体   English   中英

从Java中的Kotlin脚本文件加载类

[英]Load class from kotlin script file in java

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

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

我知道我可以使用jsr223来评估ScriptEngine.eval(String script)的脚本文件,该脚本文件使用KotlinJsr223JvmLocalScriptEngineFactory ,但是通过简单的类声明调用脚本的eval会返回null,并且我无法访问该类。

我已经添加了正确的依赖关系,并且kotlin脚本引擎工厂已正确加载(我可以在new ScriptEngineManager().getEngineFactories()的结果中看到它),由于eval,我只会得到null。 假设那是因为脚本本身实际上并没有返回任何东西,只需定义一个类即可。 这就是我要加载的脚本文件的样子:

package scripts

import com.example.SomeJavaInterface
import com.example.SomeArg
import com.example.SomeReturnValue

class TestScript : SomeJavaInterface {
    override fun someMethod(SomeArg arg): SomeReturnValue {
        return SomeReturnValue()
    }
}

我正在使用kotlin-stdlib,kotlin-compiler和kotlin-script-util 1.2.41版。

Kotlin脚本无法实现吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM