На основе Динамическая оценка шаблонных строк в Kotlin , я пытался, для специального и редкого использования, запустить Kotlin сценарии, хранящиеся в виде строк. Мой Android Studio
обновлен (3.4.1). Мой компьютер работает Windows
.
Скрипт теста хранится здесь .
Я добавил JS223.Jar
файл в папку libs
, добавил в качестве библиотеки и поместил зависимость в gradle (приложение).
Исходный код
import javax.script.*
val engine = ScriptEngineManager().getEngineByExtension("kts")!!
engine.eval("val x = 3")
val res = engine.eval("x + 2")
Основываясь на реальном использовании, я скопировал с JetBrain / Kotlin в GitHub setIdeaIoUseFallback()
код без зависимости
Однако, с или без setIdeaIoUseFallback()
предыдущего вызова, приведенный выше код дает сумасшедшую ошибку времени выполнения в ScriptEngineManager()
call
java.lang.NoClassDefFoundError: Failed resolution of: Lsun/misc/Service
Javax.script.ScriptEngineManager.initEngines(ScriptEngineManager.java:90)
javax.script.ScriptEngineManager.access$0(ScriptEngineManager.java:86)
javax.script.ScriptEngineManager$1.run(ScriptEngineManager.java:80)
java.security.AccessController.doPrivileged(AccessController.java:41)
javax.script.ScriptEngineManager.init(ScriptEngineManager.java:78)
javax.script.ScriptEngineManager.<init>(ScriptEngineManager.java:51)
br.com.greatsolutions.paulo.kotlinfirst.MainActivity.onCreate(MainActivity.kt:65)