'How do I execute kotlin scripts in Spring Boot applications?
I want to run some DSL scripts in Spring Boot applications. I have intended to use Kotlin to write DSL. But I don't know how to perform Kotlin scripts.
This is code:
public class ScriptExecutor {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByExtension("kts");
engine.eval("println(\"Hello Kotlin!\")");
}
}
And I used ojdkbuild8 1.8.0.322-1.b06.
Refer to this link link1 , I added these dependencies:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-script-runtime:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-script-util:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-jvm-host-embeddable:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-jvm-host:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-jsr223-embeddable:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-scripting-jsr223:1.3.72"
But I got the following error:
Exception in thread "main" java.lang.NoSuchMethodError: kotlin.script.experimental.util.PropertiesCollection$Companion.keyCopy(Lkotlin/script/experimental/util/PropertiesCollection$Key;)Lkotlin/script/experimental/util/PropertiesCollection$PropertyKeyCopyDelegate;
at kotlin.script.experimental.jvm.JvmScriptCompilationKt.<clinit>(jvmScriptCompilation.kt:96)
at kotlin.script.experimental.jsr223.KotlinJsr223DefaultScriptEngineFactory$getScriptEngine$1.invoke(KotlinJsr223DefaultScriptEngineFactory.kt:59)
at kotlin.script.experimental.jsr223.KotlinJsr223DefaultScriptEngineFactory$getScriptEngine$1.invoke(KotlinJsr223DefaultScriptEngineFactory.kt:32)
at kotlin.script.experimental.api.ScriptCompilationConfiguration.<init>(scriptCompilation.kt:22)
at kotlin.script.experimental.api.ScriptCompilationConfiguration.<init>(scriptCompilation.kt:27)
at kotlin.script.experimental.jsr223.KotlinJsr223DefaultScriptEngineFactory.getScriptEngine(KotlinJsr223DefaultScriptEngineFactory.kt:58)
at javax.script.ScriptEngineManager.getEngineByExtension(ScriptEngineManager.java:288)
So I refer to another document to simplify dependence.link2:
implementation 'org.jetbrains.kotlin:kotlin-script-util:1.3.72'
implementation 'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.72'
implementation 'org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.72'
But I get NPE error.In ScriptEngine engine = engineManager.getEngineByExtension("kts"),engine is null.
Back to DSL's question, I don't even know if using Kotlin is right, will Groovy a better choice?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
