Yaml dependency error with micronaut app start up

100 Views Asked by At

How to resolve the error. I am not sure which snake yaml dependency can resolve the micronaut project start-up error.

2023-11-02 22:36:41 ERROR i.m.r.Micronaut(handleStartupException):338 - Error starting Micronaut server: org.yaml.snakeyaml.constructor.SafeConstructor: method 'void <init>()' not found
java.lang.NoSuchMethodError: org.yaml.snakeyaml.constructor.SafeConstructor: method 'void <init>()' not found
    at io.micronaut.context.env.yaml.CustomSafeConstructor.<init>(CustomSafeConstructor.java:36) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.yaml.YamlPropertySourceLoader.processInput(YamlPropertySourceLoader.java:56) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.AbstractPropertySourceLoader.read(AbstractPropertySourceLoader.java:117) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.AbstractPropertySourceLoader.loadProperties(AbstractPropertySourceLoader.java:102) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.AbstractPropertySourceLoader.load(AbstractPropertySourceLoader.java:68) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.AbstractPropertySourceLoader.load(AbstractPropertySourceLoader.java:55) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.DefaultEnvironment.loadPropertySourceFromLoader(DefaultEnvironment.java:607) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.DefaultEnvironment.readPropertySourceList(DefaultEnvironment.java:541) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.env.DefaultEnvironment.readPropertySourceList(DefaultEnvironment.java:527) ~[micronaut-inject-3.7.1.jar:3.7.1]
    at io.micronaut.context.DefaultApplicationContext$RuntimeConfiguredEnvironment.readPropertySourceList(DefaultApplicationContext.java:794) ~[micronaut-inject-3.7.1.jar:3.7.1]

After this error, I did minor refactoring like below

implementation group: 'org.yaml', name: 'snakeyaml', version: '2.0'

configurations.all {
    exclude group: 'org.yaml'
    resolutionStrategy {
        force  "org.yaml"
    }
}

I still get the same error? Any suggestion?

1

There are 1 best solutions below

0
devatherock On

The problem is that you are trying to use SnakeYAML 2.0 with Micronaut 3.7.1. Micronaut 3.7.x versions were released before SnakeYAML 2.0, which contained breaking changes, and hence they work only with 1.x versions of SnakeYAML. You can use one of the combinations below:

  • Micronaut 3.7.1 and SnakeYAML 1.33
  • Micronaut 3.8.7 or higher and SnakeYAML 2.0 or higher