iguissouma
03/09/2022, 10:25 PM2022-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
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)
)
}
}
iguissouma
03/19/2022, 1:30 PMilya.chernikov
03/19/2022, 6:12 PMkotlin-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.ilya.chernikov
03/19/2022, 6:16 PMKotlinJsr223StandardScriptEngineFactory4Idea
. 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.iguissouma
03/19/2022, 6:22 PM