标签: micronaut-openapi

基于 Micronaut 的应用程序构建的 Gradle 因不兼容而导致来自 3rd-party Snakeyaml lib 的 NoSuchMethodError 中断。使用 OpenAPI 生成器插件

自上周(首次发生于 2023 年 5 月 9 日)以来,我们基于 Micronaut 的应用程序的 Gradle 构建失败了

[...]

> Task :openApiGenerate FAILED
Error snake-parsing yaml content
java.lang.NoSuchMethodError: org.yaml.snakeyaml.constructor.SafeConstructor: method 'void <init>()' not found
        at io.swagger.v3.parser.util.DeserializationUtils$CustomSnakeYamlConstructor.<init>(DeserializationUtils.java:393)
        at io.swagger.v3.parser.util.DeserializationUtils.readYamlTree(DeserializationUtils.java:207)
        at io.swagger.v3.parser.util.DeserializationUtils.deserializeIntoTree(DeserializationUtils.java:143)
        at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:165)
        at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:94)
        at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)
        at org.openapitools.codegen.config.CodegenConfigurator.toContext(CodegenConfigurator.java:589)
        at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:647)
        at org.openapitools.generator.gradle.plugin.tasks.GenerateTask.doWork(GenerateTask.kt:825)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
        [...]
Run Code Online (Sandbox Code Playgroud)

该项目利用了——除其他外——

在调查了一些可能的根本原因后,对我来说,这似乎是由于 3rd-party lib 的snakeyaml版本与该库的“交叉使用”之间的1.332.0兼容更改引起的:

米克罗特3.9.1

使用snakeyaml版本,在他的BOM2.0中声明:

$ ./gradlew dependencyInsight --dependency …
Run Code Online (Sandbox Code Playgroud)

gradle openapi-generator micronaut-openapi

5
推荐指数
0
解决办法
987
查看次数