Groovy имеет GroovyClassLoader
, с помощью которого класс groovy может быть загружен в ваше Java-приложение с помощью GroovyClassLoader.parseClass(String script)
, а затем создан позднее и его метод вызывается.
Есть ли способ сделать этос файлами сценариев kotlin (.kts
)?
Я знаю, что могу использовать jsr223 для оценки файла сценария с ScriptEngine.eval(String script)
, который использует KotlinJsr223JvmLocalScriptEngineFactory
, однако вызывая eval вместо сценария, который является просто объявлением класса,возвращает ноль, и я не могу получить доступ к этому классу.
Я добавил правильные зависимости, и фабрика механизма сценариев kotlin правильно загружена (я вижу это в результате new ScriptEngineManager().getEngineFactories()
), я просто получаю ноль какрезультат оценки.Предполагая, что это потому, что сам скрипт ничего не возвращает, просто определите класс.Вот как выглядит файл скрипта, который я пытаюсь загрузить:
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?