Getting java.lang.NoSuchMethodError: org.yaml.snakeyaml.constructor.SafeConstructor: method <init>()V not found while running Play App with SBT

问题描述 投票:0回答:1

java.lang.NoSuchMethodError: org.yaml.snakeyaml.constructor.SafeConstructor: 方法 ()V 不是 成立 在 io.swagger.v3.parser.util.DeserializationUtils$CustomSnakeYamlConstructor.(DeserializationUtils.java:397) 在 io.swagger.v3.parser.util.DeserializationUtils.readYamlTree(DeserializationUtils.java:209) 在 io.swagger.v3.parser.util.DeserializationUtils.deserializeIntoTree(DeserializationUtils.java:145) 在 io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:168) 在 io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:97) 在 io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16) 在 com.atlassian.oai.validator.util.OpenApiLoader.readSwaggerParserResult(OpenApiLoader.java:79) 在 com.atlassian.oai.validator.util.OpenApiLoader.loadApi(OpenApiLoader.java:48) 在 com.atlassian.oai.validator.OpenApiInteractionValidator$Builder.build(OpenApiInteractionValidator.java:643)

这是在将 snakeyaml 的版本从 1.3 更新到 2.0 之后

scala playframework sbt nosuchmethoderror snakeyaml
1个回答
0
投票

事实上,snakeyaml 2.0 没有类的空参数构造函数

org.yaml.snakeyaml.constructor.SafeConstructor
.

在 snakeyaml 1.33 中存在这样的构造函数,但已被弃用。

在snakeyaml 2.0中尝试替换

import org.yaml.snakeyaml.{LoaderOptions, Yaml}
import org.yaml.snakeyaml.constructor.SafeConstructor

val safeConstructor = new SafeConstructor
val yaml = new Yaml(safeConstructor)  

val loaderOptions = new LoaderOptions
// loaderOptions.setCodePointLimit(...)
// ...
val safeConstructor = new SafeConstructor(loaderOptions)
val yaml = new Yaml(safeConstructor)

https://bitbucket.org/snakeyaml/snakeyaml/wiki/Documentation#markdown-header-loading-yaml

https://bitbucket.org/snakeyaml/snakeyaml/src/master/src/test/java/examples/SafeConstructorExampleTest.java

© www.soinside.com 2019 - 2024. All rights reserved.