[英]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.