java.lang.NoSuchFieldError: toStringWriter when using Karate
java.lang.NoSuchFieldError: toStringWriter when using Karate
遇到这个错误:
10:28:30.552 [main][] INFO com.intuit.karate - >> lock acquired, begin callSingle: classpath:preview-srs-session.feature
Exception in thread "main" java.lang.NoSuchFieldError: toStringWriter
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:76)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:68)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.reader.JsonWriter.writeJSONKV(JsonWriter.java:354)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:141)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:123)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.reader.JsonWriter.writeJSONKV(JsonWriter.java:354)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:141)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:123)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:78)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:68)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.JSONValue.toJSONString(JSONValue.java:632)
at net.minidev.json.JSONValue.toJSONString(JSONValue.java:610)
at com.intuit.karate.JsonUtils.toJson(JsonUtils.java:130)
at com.intuit.karate.JsonUtils.toJsonDoc(JsonUtils.java:172)
at com.intuit.karate.ScriptValue.<init>(ScriptValue.java:425)
at com.intuit.karate.ScriptValue.<init>(ScriptValue.java:417)
at com.intuit.karate.ScriptValueMap.put(ScriptValueMap.java:30)
at com.intuit.karate.core.ScenarioContext.<init>(ScenarioContext.java:292)
at com.intuit.karate.StepActions.<init>(StepActions.java:53)
at com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:141)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:236)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:164)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:73)
at com.intuit.karate.core.Engine.executeFeatureSync(Engine.java:109)
at com.intuit.karate.Script.evalFeatureCall(Script.java:1769)
at com.intuit.karate.Script.evalFeatureCall(Script.java:1745)
at com.intuit.karate.core.ScriptBridge.call(ScriptBridge.java:421)
at com.intuit.karate.core.ScriptBridge.callSingle(ScriptBridge.java:450)
at jdk.nashorn.internal.scripts.Script$Recompilation$\^eval\_.L:1(<eval>:92)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.intuit.karate.Script.evalJsFunctionCall(Script.java:1693)
at com.intuit.karate.Script.call(Script.java:1650)
at com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1786)
at com.intuit.karate.core.ScenarioContext.<init>(ScenarioContext.java:267)
at com.intuit.karate.StepActions.<init>(StepActions.java:53)
at com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:141)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:236)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:164)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:73)
at com.intuit.karate.core.Engine.executeFeatureSync(Engine.java:109)
at com.intuit.karate.IdeUtils.exec(IdeUtils.java:64)
at cucumber.api.cli.Main.main(Main.java:36)
Disconnected from the target VM, address: '127.0.0.1:61606', transport: 'socket'
Process finished with exit code 1
这是因为有时当您将空手道混入具有额外 Java 依赖项的项目时,一些 JSON 处理代码可能会变得混乱。
感谢this article,解决方案是,您可以显式加载依赖项:
testCompile "net.minidev:json-smart:2.3"
遇到这个错误:
10:28:30.552 [main][] INFO com.intuit.karate - >> lock acquired, begin callSingle: classpath:preview-srs-session.feature
Exception in thread "main" java.lang.NoSuchFieldError: toStringWriter
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:76)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:68)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.reader.JsonWriter.writeJSONKV(JsonWriter.java:354)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:141)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:123)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.reader.JsonWriter.writeJSONKV(JsonWriter.java:354)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:141)
at net.minidev.json.reader.JsonWriter.writeJSONString(JsonWriter.java:123)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:78)
at com.intuit.karate.JsonUtils$NashornObjectJsonWriter.writeJSONString(JsonUtils.java:68)
at net.minidev.json.JSONValue.writeJSONString(JSONValue.java:596)
at net.minidev.json.JSONValue.toJSONString(JSONValue.java:632)
at net.minidev.json.JSONValue.toJSONString(JSONValue.java:610)
at com.intuit.karate.JsonUtils.toJson(JsonUtils.java:130)
at com.intuit.karate.JsonUtils.toJsonDoc(JsonUtils.java:172)
at com.intuit.karate.ScriptValue.<init>(ScriptValue.java:425)
at com.intuit.karate.ScriptValue.<init>(ScriptValue.java:417)
at com.intuit.karate.ScriptValueMap.put(ScriptValueMap.java:30)
at com.intuit.karate.core.ScenarioContext.<init>(ScenarioContext.java:292)
at com.intuit.karate.StepActions.<init>(StepActions.java:53)
at com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:141)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:236)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:164)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:73)
at com.intuit.karate.core.Engine.executeFeatureSync(Engine.java:109)
at com.intuit.karate.Script.evalFeatureCall(Script.java:1769)
at com.intuit.karate.Script.evalFeatureCall(Script.java:1745)
at com.intuit.karate.core.ScriptBridge.call(ScriptBridge.java:421)
at com.intuit.karate.core.ScriptBridge.callSingle(ScriptBridge.java:450)
at jdk.nashorn.internal.scripts.Script$Recompilation$\^eval\_.L:1(<eval>:92)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.intuit.karate.Script.evalJsFunctionCall(Script.java:1693)
at com.intuit.karate.Script.call(Script.java:1650)
at com.intuit.karate.Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(Script.java:1786)
at com.intuit.karate.core.ScenarioContext.<init>(ScenarioContext.java:267)
at com.intuit.karate.StepActions.<init>(StepActions.java:53)
at com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:141)
at com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:236)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:164)
at com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:73)
at com.intuit.karate.core.Engine.executeFeatureSync(Engine.java:109)
at com.intuit.karate.IdeUtils.exec(IdeUtils.java:64)
at cucumber.api.cli.Main.main(Main.java:36)
Disconnected from the target VM, address: '127.0.0.1:61606', transport: 'socket'
Process finished with exit code 1
这是因为有时当您将空手道混入具有额外 Java 依赖项的项目时,一些 JSON 处理代码可能会变得混乱。
感谢this article,解决方案是,您可以显式加载依赖项:
testCompile "net.minidev:json-smart:2.3"