Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSR223与Kotlin绑定参数失败_Java_Kotlin_Binding_Jsr223_Scriptengine - Fatal编程技术网

Java 使用JSR223与Kotlin绑定参数失败

Java 使用JSR223与Kotlin绑定参数失败,java,kotlin,binding,jsr223,scriptengine,Java,Kotlin,Binding,Jsr223,Scriptengine,向JMeter添加了Kotlin JSR223支持,并使用Kotlin语言执行脚本 它忽略JMeter绑定参数,因为字符串类型参数,尝试: println(Parameters) 接收未解决的错误: javax.script.ScriptException: Error: Unresolved reference: Parameters at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.com

向JMeter添加了Kotlin JSR223支持,并使用Kotlin语言执行脚本

它忽略JMeter绑定参数,因为字符串类型
参数
,尝试:

println(Parameters)
接收未解决的错误:

javax.script.ScriptException: Error: Unresolved reference: Parameters
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compile(KotlinJsr223JvmScriptEngineBase.kt:74) ~[kotlin-compiler.jar:1.3.50-release-112]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compile(KotlinJsr223JvmScriptEngineBase.kt:35) ~[kotlin-compiler.jar:1.3.50-release-112]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:217) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:71) [ApacheJMeter_java.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
我尝试使用
$

println($Parameters)
模糊误差

2019-11-11 08:56:21,803 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: Error: Overload resolution ambiguity: 
@InlineOnly public inline fun println(message: Any?): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Boolean): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Byte): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Char): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: CharArray): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Double): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Float): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Int): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Long): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Short): Unit defined in kotlin.io
javax.script.ScriptException: Error: Overload resolution ambiguity: 
@InlineOnly public inline fun println(message: Any?): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Boolean): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Byte): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Char): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: CharArray): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Double): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Float): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Int): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Long): Unit defined in kotlin.io
@InlineOnly public inline fun println(message: Short): Unit defined in kotlin.io
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compile(KotlinJsr223JvmScriptEngineBase.kt:74) ~[kotlin-compiler.jar:1.3.50-release-112]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compile(KotlinJsr223JvmScriptEngineBase.kt:35) ~[kotlin-compiler.jar:1.3.50-release-112]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:217) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:71) [ApacheJMeter_java.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
使用[bindings][1]作为

类似错误:

 javax.script.ScriptException: Error: Unresolved reference: bindings
我也尝试添加,但结果相同

JMeter代码:

若不使用编译脚本,则错误类似

javax.script.ScriptException: Unresolved reference: Parameters
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:104) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:63) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at kotlin.script.experimental.jvmhost.jsr223.KotlinJsr223ScriptEngineImpl.compileAndEval(KotlinJsr223ScriptEngineImpl.kt:82) ~[kotlin-main-kts.jar:1.3.50-release-112]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_191]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:225) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
将Scala与JSR223一起使用时也有类似的情况

使用Scala引擎时不能使用绑定参数(在beanshell、groovy、velocity等其他引擎中都可以使用)


打开一个问题

打开一个问题

只是出于好奇:为什么需要将Kotlin或Scala绑在那里?@YuriG Kotlin/Scala是使用“高级java功能”而不升级java 8的选项,而且JMeter开发人员开始使用Kotlin me,Groovy感觉已经足够了(是的,BeanShell很难看):快,拥有几乎不存在的现代风尚+学习曲线(对于有Java知识的人)。绝对不必要的活动是你正在做的。很抱歉这么直截了当,但你说的并没有说服我。只是出于好奇:你为什么需要把Kotlin或Scala绑在那里?@YuriG Kotlin/Scala是使用“高级java功能”而不升级java 8的选项,而且JMeter开发人员开始使用Kotlin me,Groovy感觉已经足够了(是的,BeanShell很难看):快,拥有几乎不存在的现代风尚+学习曲线(对于有Java知识的人)。绝对不必要的活动是你正在做的。很抱歉这么直截了当,但你说的话没有说服我。
importAllBindings(true)
 Bindings bindings = engine.createBindings();
 bindings.put("Parameters", scriptParameters); 
 ...
 CompiledScript compiledScript = compiledScriptsCache.get(newCacheKey);
 ...  
 compiledScript.eval(bindings)
javax.script.ScriptException: Unresolved reference: Parameters
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:104) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:63) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at kotlin.script.experimental.jvmhost.jsr223.KotlinJsr223ScriptEngineImpl.compileAndEval(KotlinJsr223ScriptEngineImpl.kt:82) ~[kotlin-main-kts.jar:1.3.50-release-112]
    at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31) ~[kotlin-compiler-embeddable-1.3.50.jar:1.3.50-release-112 (1.3.50)]
    at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_191]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:225) ~[ApacheJMeter_core.jar:5.1.1 r1855137]