Kotlin поддержка сценариев завершается неудачно с «неправильным числом аргументов» при попытке запустить любой сценарий - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь запустить очень простой c скрипт с org.jetbrains.kotlin:kotlin-scripting-jvm, но я получаю две ошибки, когда я не получаю ни одной. Это мой сценарий:

1

Я ожидаю получить ResultWithDiagnostics.Success с resultValue из 1, но вместо этого я получу Failure с этими отчетами:

  • Выражение не используется
  • неверное количество аргументов

Даже если я исправлю предупреждение, изменив свой сценарий на

class Foo(val foo: String = "foo")

Foo()

Я все еще получаю wrong number of arguments error. Я проверил источник, и кажется, что в

BasicJvmScriptEvaluator:95
        return try {
            ctor.newInstance(*args.toArray()) <-- here
        } finally {
            Thread.currentThread().contextClassLoader = saveClassLoader
        } 

args пусто. Что я делаю неправильно? Вот как я пытаюсь запустить скрипт:

private fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
    val compilationConfiguration = createJvmCompilationConfigurationFromTemplate<TestScript> {
        jvm {
            dependenciesFromCurrentContext(wholeClasspath = true)
        }
    }

    return BasicJvmScriptingHost().eval(scriptFile.toScriptSource(), compilationConfiguration, null)
}

, и это трассировка стека для этой wrong number of arguments ошибки, которую я получаю:

java.lang.IllegalArgumentException: wrong number of arguments
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.evalWithConfigAndOtherScriptsResults(BasicJvmScriptEvaluator.kt:95)
    at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.invoke$suspendImpl(BasicJvmScriptEvaluator.kt:40)
    at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.invoke(BasicJvmScriptEvaluator.kt)
    at kotlin.script.experimental.host.BasicScriptingHost$eval$1.invokeSuspend(BasicScriptingHost.kt:47)
    at kotlin.script.experimental.host.BasicScriptingHost$eval$1.invoke(BasicScriptingHost.kt)
    at kotlin.script.experimental.host.BasicScriptingHost$runInCoroutineContext$1.invokeSuspend(BasicScriptingHost.kt:35)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
    at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.kt:116)
    at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:80)
    at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:54)
    at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
    at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:36)
    at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
    at kotlin.script.experimental.host.BasicScriptingHost.runInCoroutineContext(BasicScriptingHost.kt:35)
    at kotlin.script.experimental.host.BasicScriptingHost.eval(BasicScriptingHost.kt:45)
...