Any idea why I’m getting this: ```2022-03-09 23:2...
# scripting
i
Any idea why I’m getting this:
Copy code
2022-03-09 23:20:03,637 [ 284400]  ERROR - plication.impl.ApplicationImpl - Service is dying 
java.lang.IllegalStateException: Service is dying
   at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Dying.get(CompileService.kt:55)
   at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Dying.get(CompileService.kt:54)
   at org.jetbrains.kotlin.daemon.client.KotlinRemoteReplCompilerClient.<init>(KotlinRemoteReplCompilerClient.kt:51)
   at org.jetbrains.kotlin.daemon.client.KotlinRemoteReplCompilerClient.<init>(KotlinRemoteReplCompilerClient.kt:27)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea$replCompiler$2.invoke(KotlinJsr223JvmScriptEngine4Idea.kt:59)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea$replCompiler$2.invoke(KotlinJsr223JvmScriptEngine4Idea.kt:27)
   at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea.getReplCompiler(KotlinJsr223JvmScriptEngine4Idea.kt)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea$localEvaluator$2.invoke(KotlinJsr223JvmScriptEngine4Idea.kt:74)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea$localEvaluator$2.invoke(KotlinJsr223JvmScriptEngine4Idea.kt:27)
   at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea.getLocalEvaluator(KotlinJsr223JvmScriptEngine4Idea.kt)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea.getReplEvaluator(KotlinJsr223JvmScriptEngine4Idea.kt:77)
   at org.jetbrains.kotlin.jsr223.KotlinJsr223JvmScriptEngine4Idea.createState(KotlinJsr223JvmScriptEngine4Idea.kt:79)
   at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.createState$default(KotlinJsr223JvmScriptEngineBase.kt:46)
   at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.getCurrentState(KotlinJsr223JvmScriptEngineBase.kt:53)
   at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.nextCodeLine(KotlinJsr223JvmScriptEngineBase.kt:44)
   at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:61)
   at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31)
   at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
   at com.chutneytesting.idea.runner.ChutneyJsonToTestEventConverter.onStartTesting$lambda-4(ChutneyJsonToTestEventConverter.kt:64)
   at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:263)
   at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
   at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
   at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
   at java.base/java.security.AccessController.doPrivileged(Native Method)
   at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
   at java.base/java.lang.Thread.run(Thread.java:829)
I’m evaluating kotlin script on an intellij idea plugin
Copy code
class ChutneyKotlinJsr223JvmLocalScriptEngineFactory(val ktVirtualFile: VirtualFile, val project: Project) : KotlinJsr223JvmScriptEngineFactoryBase() {

    companion object{
        private val LOG = Logger.getInstance(ChutneyKotlinJsr223JvmLocalScriptEngineFactory::class.java)
    }

    override fun getScriptEngine(): ScriptEngine {
        val module = ModuleUtil.findModuleForFile(ktVirtualFile, project)
            ?: error("cannot find module")

        val classes = ModuleRootManager.getInstance(module).orderEntries().classes()
        val roots = classes
            .roots.filterIsInstance<FsRoot>()
            .map { it.path.substringBeforeLast('!') }
            .map { File(it) }
            .filter { it.exists() }


        val target = classes
            .roots.filter { it.isDirectory }
            .filter { it.path.lowercase().endsWith("classes") }
            .map { File(it.path) }
            .filter { it.exists() }

        <http://LOG.info|LOG.info>("dependencies for ${module.name}" + roots + classes)

        return KotlinJsr223JvmScriptEngine4Idea(
            this,
            scriptCompilationClasspathFromContextOrStlib(wholeClasspath = true) + KotlinJars.kotlinScriptStandardJars + roots + target,
            "kotlin.script.templates.standard.ScriptTemplateWithBindings",
            { ctx, argTypes ->
                ScriptArgsWithTypes(
                    arrayOf(ctx.getBindings(ScriptContext.ENGINE_SCOPE)),
                    argTypes ?: emptyArray()
                )
            },
            arrayOf(Map::class)
        )
    }


}
🧵 2
@ilya.chernikov Any idea about this exception? thanks in advance.
i
Some exception is happening during compilation. Please search for the
kotlin-daemon-*.log
files in the
$TMPDIR
folder (the one where
System.getProperty("<http://java.io|java.io>.tmpdir")
points out) and look there for the info.
BTW, you may experience clashes between the JSR-223 implementation with this approach, since you're defining the factory with the same language/extensions as the built-in
KotlinJsr223StandardScriptEngineFactory4Idea
. You can achieve the same goal by defining an
UrlClassLoader
with the classpath you need, then set it as a thread context classloader, and then use the default
kotlin
engine factory.
i
Thank you. I will take a look.