kotlinx-knit icon indicating copy to clipboard operation
kotlinx-knit copied to clipboard

Error when testing JSR223 script when I have Knit as a test dependency

Open aSemy opened this issue 2 years ago • 0 comments

  • Kotlin 1.6.21
  • Knit 0.4.0
  • Gradle 7.4.2
  • IntelliJ 2022.1
  • Windows 10

I'm trying to use Knit to test some .kts scripts. I've had lots of problems though, even though the code works when I run it within a main() function.

Here's an example of a script that fails

import java.io.ByteArrayOutputStream
import java.io.PrintStream
import javax.script.ScriptEngineManager
import kotlin.io.path.Path
import kotlin.test.*

    @Test
    fun testBasicEval() {
        val engine = ScriptEngineManager().getEngineByExtension("main.kts")!!
        val res1 = engine.eval("val x = 3")
        assertNull(res1)
        val res2 = engine.eval("x + 2")
        assertEquals(5, res2)
    }

The test is from https://github.com/Kotlin/kotlin-script-examples/tree/master/jvm/jsr223/jsr223-main-kts.

It produces this error whenever I declare Knit as a dependency.

ERROR Unable to initialize repl compiler:
  DEBUG Using JVM IR backend
  ERROR 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.IllegalStateException: Unable to initialize repl compiler:
  DEBUG Using JVM IR backend
  ERROR 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)'
javax.script.ScriptException: ERROR Unable to initialize repl compiler:
  DEBUG Using JVM IR backend
  ERROR 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.IllegalStateException: Unable to initialize repl compiler:
  DEBUG Using JVM IR backend
  ERROR 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)': java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.<init>(org.jetbrains.kotlin.com.intellij.psi.PsiManager)'

I'm following the example in this repo: https://github.com/Kotlin/kotlin-script-examples/tree/master/jvm/jsr223/jsr223-main-kts

Here's a quick reproduction: https://github.com/asemy/kotlinx-knit/tree/bug/41-jsr223-error

aSemy avatar Apr 23 '22 13:04 aSemy