Harish
Harish

Reputation: 613

Yaml dependency error with micronaut app start up

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?

Upvotes: 0

Views: 235

Answers (1)

devatherock
devatherock

Reputation: 4941

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

Upvotes: 0

Related Questions